0
我想在我的模型中有一個before_create方法,它將檢查模型是否與另一個模型(用戶)有關聯/關係,並在關係爲零。在創建/保存模型記錄之前設置關聯ID
問題是,我不知道爲什麼下面的條件不會被執行,儘管用戶和user_id變量爲零。
的關係是:
User has_many :Leads
Campaign has_many :Leads
Lead belongs_to :User and :Campaign
這裏的型號導線代碼:
class Lead < ActiveRecord::Base
attr_accessible :email
belongs_to :popup
belongs_to :campaign
validates :email, presence: true, format: { with: /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i }
before_create :check_user_id
private
def check_user_id
puts "check user id: #{user_id}"
puts self.user_id
puts user_id
puts user
if self.user.blank?
"set user id"
user_id = campaign.user_id if campaign
end
end
end
的問題是,self.user.blank?條件永遠不會被滿足。如果我嘗試user.nil?或者除非用戶我總是得到相同的東西,即使user_id和用戶都是零。我也嘗試使用self.user.nil這樣的自我前綴?等等。
雖然執行check_user_id方法,但爲什麼條件永遠不會滿足? 創建新潛在客戶時,設置此關係的最佳方式是什麼?
牽頭下創建活動,使用戶協會應正確設置:
c = Campaign.new
l = c.leads.new
l.email = '[email protected]'
l.save
感謝您的幫助!
謝謝你的答案..它現在的工作!有沒有更好的方法來自動設置關係分配?也許是:通過設置模型關係? – Aljaz
您的代碼非常短的版本是:'self.user_id || = campaign.try(:user_id)'(一行) – MrYoshiji