0
我的機遇模型是這樣的:Rails的更新相關模型的對象
class Opportunity < ApplicationRecord
# opportunity belongs to a user
belongs_to :user
def self.create_opportunity(params)
# Fetch opportunity params and user params from request parameters
opportunity_params = params[:opportunity_params]
user_params = params[:user_params]
opportunity = Opportunity.find_or_initialize_by(id: opportunity_params[:id])
opportunity.assign_attributes(opportunity_params)
opportunity.user = User.find_or_initialize_by(email: user_params[:email])
opportunity.user.assign_attributes(user_params)
opportunity.save
end
user.rb模型
class User < ApplicationRecord
# validate user email
validates :email, presence: true, email: true
enum gender: { male:1, female:2 }
end
我們創建了一個新的用戶,如果所提供的電子郵件地址的用戶不存在。這在創建新用戶時運行良好,但在已有用戶時不起作用。用戶模型的更新不起作用。 對於用戶更新工作,我需要具體撥打opportunity.user.save
任何想法如何使這項工作沒有顯式調用保存在用戶模型?
產生以下錯誤:未定義的方法'find_or_create_by」爲#<用戶:0x007fc108039f78> –
用戶是子ActiveRecord :: Base ?? http://apidock.com/rails/v4.0.2/ActiveRecord/Relation/find_or_create_by –
是的,添加User.rb –