题
class Job < ActiveRecord::Base
has_many :employments, :dependent => :destroy
has_many :users, :through => :employments
class User < ActiveRecord::Base
has_many :employments
has_many :jobs, :through => :employments
class Employment < ActiveRecord::Base
belongs_to :job
belongs_to :user # Employment has an extra attribute of confirmed ( values are 1 or 0)
我认为我试图更新从0证实田间1在用户点击。
<%= link_to "Confirm Job", :action => :confirmjob, :id => job.id %>
在我的工作控制器I有
def confirmjob
@job = Job.find(params[:id])
@job.employments.update_attributes(:confirmed, 1)
flash[:notice] = "Job Confirmed"
redirect_to :dashboard
end
我相信这是完全错误的,但我似乎说到HAS_MANY被猜测:通过。 我将如何做一个连接表更新确认的领域?
解决方案
我认为一个作业被分配给由工作的用户。因此,更新所有就业不是一个好主意,因为乔尔建议。我建议这样的:
class Employment
def self.confirm!(job)
employment = Employment.find(:first, :conditions => { :job_id => job.id } )
employment.update_attribute(:confirmed, true)
end
end
从控制器
@job = Job.find(params[:id])
Employment.confirm!(@job)
这意味着,一个作业只能由一个用户作出。
其他提示
下面是在这一个刺(未测试):
def confirmjob
@job = Job.find(params[:id])
@jobs.employments.each do |e|
e.update_attributes({:confirmed => 1})
end
flash[:notice] = "Job Confirmed"
redirect_to :dashboard
end
不隶属于 StackOverflow