Ruby on rails 未调用保存之前的Rails
我有一个ActiveRecord模型“offer”,它属于item的两个实例。项目属于用户 该报价模型具有以下特点: 提供的\u项目\u id 接收\u项目\u id 提供用户id 接收用户id 在创建模型的过程中,我希望Rails通过读取条目ID并处理该关系来保存用户 我得到了这个:Ruby on rails 未调用保存之前的Rails,ruby-on-rails,ruby,activerecord,model,associations,Ruby On Rails,Ruby,Activerecord,Model,Associations,我有一个ActiveRecord模型“offer”,它属于item的两个实例。项目属于用户 该报价模型具有以下特点: 提供的\u项目\u id 接收\u项目\u id 提供用户id 接收用户id 在创建模型的过程中,我希望Rails通过读取条目ID并处理该关系来保存用户 我得到了这个: class Offer < ActiveRecord::Base attr_accessible :offered_item_id, :receiving_item_id, :state b
class Offer < ActiveRecord::Base
attr_accessible :offered_item_id, :receiving_item_id, :state
belongs_to :offering_user, class_name: "User"
belongs_to :receiving_user, class_name: "User"
belongs_to :offered_item, class_name: "Item"
belongs_to :receiving_item, class_name: "Item"
before_save :populate_user_ids
private
def populate_user_ids
self.receiving_user_id = self.receiving_item.user.id
self.offering_user_id = self.offered_item.user.id
end
end
抱歉,我对Rails还很陌生
有什么问题吗
谢谢啊,我是个轻佻的人 我使用的是:
let!(:offer) { offered_item.offers_made_with.build(receiving_item_id: receiving_item.id) }
而不是:
let!(:offer) { offered_item.offers_made_with.create(receiving_item_id: receiving_item.id) }
build
不保存,create
保存。您需要让Rails处理所属的中的id,并且有许多关系。你读过吗?是的,我已经为这些项目做过了,但我不想让用户在公共界面上访问(以避免大规模分配),所以我试图将这些设置在场景后面。我不确定你的意思。Rails确实是在“幕后”完成的,您可以控制用户在视图中看到的内容。但是对于您最初的问题,您是否尝试在保存之前将放入,以查看是否正在调用它?很难说可能会发生什么,因为不知道控制器的外观。您在尝试保存报价时是否出错?不,没有错误,我假设是!(:offer){offered_item.offeres_made_with.build(receiving_item_id:receiving_item.id)}调用保存权限吗?
let!(:offer) { offered_item.offers_made_with.create(receiving_item_id: receiving_item.id) }