Ruby on rails 需要解释归属于关联详细参考构建关联(属性={})
我有两个模型 user.rbRuby on rails 需要解释归属于关联详细参考构建关联(属性={}),ruby-on-rails,associations,Ruby On Rails,Associations,我有两个模型 user.rb class User < ActiveRecord::Base has_many :trial_subscriptions attr_accessible :trial_subscriptions_attributes end 我试图使用活动记录指南中的4.1.1.3 build_关联(attributes={})来构建用户。我需要更详细的解释 在我的rails控制台中,我正在执行以下操作,并对其进行推理 @subscription = Tri
class User < ActiveRecord::Base
has_many :trial_subscriptions
attr_accessible :trial_subscriptions_attributes
end
我试图使用活动记录指南中的4.1.1.3 build_关联(attributes={})
来构建用户。我需要更详细的解释
在我的rails控制台中,我正在执行以下操作,并对其进行推理
@subscription = TrialSubscription.new() #creating a new object
@user = @subscription.build_user(email: 'blahblahblah@gmail.com', password:'eightcharacterslong')#building the user
@user.save #saving the user permanently
User.last #saved user shows up
@a = User.last
@a.trial_subscriptions
但当我做以下事情时
@subscription = TrialSubscription.new() #creating a new object
@user = @subscription.build_user(email: 'blahblahblah@gmail.com', password:'eightcharacterslong')#building the user
@user.save #saving the user permanently
User.last #saved user shows up
@a = User.last
@a.trial_subscriptions
我得到一个空数组
当我这样做的时候
Trial_Subscription.last, there is no extra record (the TrialSubscription.new ? )
我希望最后的试用版订阅记录会有它的
user_id #be filled in with the build user that I just created.
解释一下就好了
这些代码将被发送到我的试用版订阅控制器上,并且会有一个表单发布用户输入的信息
我也注意到我可以做一个
@user.trial_subscriptions.create!() #and then maybe a @user.save
但我觉得第一种方法应该行得通 让我们先看一下您的两种型号:
# app/models/user.rb
class User < ActiveRecord::Base
has_many :trial_subscriptions
attr_accessible :trial_subscriptions_attributes
end
# app/models/trial_subscription.rb
class TrialSubscription < ManualSubscription
end
使用此设置,您应该能够创建具有关联试用订阅的用户,如下所示:
@user = User.new(email: 'blahblahblah@gmail.com', password:'eightcharacterslong')
@subscription = @user.trial_subscriptions.build
@user.save #saving the user permanently
User.last // Shows last user
User.last.trial_subscriptions #shows last users trial subscriptions
使用通过试用订阅创建用户的方法,您需要在试用订阅
模型中定义接受
的嵌套属性和属性可访问
希望这是有帮助的 这很有帮助,实际上我已经为和
attr accessible
正确定义了accepts\u嵌套的属性。我不知道你可以做一个用户。新建并生成订阅,而不是做试用订阅。新建并生成用户。通常,你想用另一种方法,即使用模型和有许多来创建关联,因为在用户可以订阅之前,首先存在的是用户。但这并不意味着你不能换一种方式来做。我怎么能换一种方式来做呢?我想通过用户来构建它,创建一个表单并嵌套属性,但是用户是通过一个注册表单在designe注册控制器中创建的。我在Desive中创建两个注册表单时遇到问题。我发布了一些关于这个的问题,如果你知道Desive的话。我可以考虑用另一种方式来建立它,而不是先做一个用户。
@user = User.new(email: 'blahblahblah@gmail.com', password:'eightcharacterslong')
@subscription = @user.trial_subscriptions.build
@user.save #saving the user permanently
User.last // Shows last user
User.last.trial_subscriptions #shows last users trial subscriptions