首先,我认为你犯了一个错误。
当您有 2 个具有has_many
关系的模型时,您应该设置一个has_and_belongs_to_many
关系。
在大多数情况下,2 个模型由
has_many
-belongs_to
has_one
-belongs_to
has_and_belongs_to_many
-has_and_belongs_to_many
has_and_belongs_to_many
是解决方案之一。但是,如果您选择它,则必须创建一个名为forms_users
. 选择一个has_and_belongs_to_many
意味着您不能在连接表上设置状态。
为此,您必须添加一个连接表,其中包含一个 form_id、一个 user_id 和一个状态。
class User < ActiveRecord::Base
has_many :user_forms
has_many :forms, :through => :user_forms
end
class UserForm < ActiveRecord::Base
belongs_to :user
belongs_to :form
end
class Form < ActiveRecord::Base
has_many :user_forms
has_many :users, :through => :user_forms
end
然后,你可以得到
User.find(params[:u]).user_forms
或者
UserForm.find(:all,
:conditions => ["user_forms.user_id = ? AND user_forms.status = ?",
params[:u],
'close'
)
)