تحديث حقل جدول الانضمام
-
19-09-2019 - |
سؤال
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)
في رأيي، أحاول تحديث fied مؤكدا من 0 إلى 1 على النقر فوق المستخدم.
<%= link_to "Confirm Job", :action => :confirmjob, :id => job.id %>
في تحكم وظيفتي لدي
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