controller 里 new 方法 我使用 query 帮我增加一些检索条件来检索用户,现有关系是
class Poll< ApplicationRecord
has_many :clients, :dependent => :destroy
belongs_to :user
end
class Client < ApplicationRecord
belongs_to :user
belongs_to :poll
end
class User< ApplicationRecord
has_many :clients
has_many :polls
end
如下是 Client 控制器,用于查询用户是否在当前的 Client 表里,“在”的话,查询出“不在”的并显示出来,“不在”的话,查询出“在”的并显示出来 Client 表里没数据也就是最开始在 client 表里创建 user 的时候,:flag 标签是“f”也就是查询出“不在”client 表里的 user
def new
retrieve_clients_add_query
sort_init(@query.sort_criteria.empty? ? [['lastname', 'asc'], ['firstname', 'asc']] : @query.sort_criteria)
sort_update(@query.sortable_columns)
@query.sort_criteria = sort_criteria.to_a
if @query.valid?
case params[:format]
when 'csv', 'pdf', 'xls', 'vcf'
@limit = Setting.issues_export_limit.to_i
when 'atom'
@limit = Setting.feeds_limit.to_i
when 'xml', 'json'
@offset, @limit = api_offset_and_limit
else
@limit = per_page_option
end
@users_count = @query.object_count(:flag => 'f')
if Redmine::VERSION.to_s > '2.5'
@users_pages = Paginator.new(@users_count, @limit, params[:page])
@offset = @users_pages.offset
else
@peoples_pages = Paginator.new(self, @users_count, @limit, params[:page])
@offset = @users_pages.current.offset
end
@users_count_by_group = @query.object_count_by_group
@user = @query.results_scope(
:include => [:projects],
:search => params[:search],
:order => sort_clause,
:limit => @limit,
:offset => @offset,
:type => 'User',
:flag => 'f'
)
@filter_tags = @query.filters["tags"] && @query.filters["tags"][:values]
@groups = Group.all.sort
@departments = Department.order(:name)
end
end
现在问题是 我需要通过在别的方法里将 query 里的这个 options[:flag] 给去掉 我的写法如下:
if @poll.status_id == 3
@clients= Client.where("client_id =?", @poll.id)
@clients.delete_all
end
这样是把所有的数据都清掉了,options[:flag] 标签还在,每次在 client 控制器里 new 的时候都会去判断 options[:flag] 的值时“f”或者“t”,根据值的不同进行不同的 select 查询语句,但是我希望的是能将 options[:flag] 这个标签去掉,因为每次 new 动作执行完,:flag 标签都自动变化成相反的了,比如一开始是 f,等我选完了,标签变成 t,要求是不能在@query.results_scope这里去掉 flag 这个参数。