轨道中的多模型形式 3.



当涉及到rails时,我仍然有点n00b,但是,我确实有一个关于如何处理多模型形式的问题。

基本上,我有一个活动,用户需要能够注册该活动并提供用于向活动收费的信用卡。信用卡(我不会持有CC的实际数据,authorize.net 会,但我需要保留一个代表该卡的令牌)将与用户一起生活,以便他们将来可以注册其他活动。因此,我希望用户将来能够编辑此卡片,并且该卡片不特定于单个事件。这似乎不像我会使用嵌套路由的东西,是吗?

有一种感觉,这很简单,但我想我只是不完全确定该怎么做。我是否可以使用嵌套模型(不是路由)并仍然独立更新每个部分?

如果我理解你的问题,那么是的,你可以。我想你的意思是这样的:

class User < ActiveRecord::Base
  has_one :credit_card
end

如果这是正确的,那么第一步是将其添加到 User 类中:

class User < ActiveRecord::Base
  has_one :credit_card
  accepts_nested_attributes_for :credit_card
end

此时,您只需在路由文件中设置"用户"资源,就可以在编辑视图中通过fields_for方法编辑信用卡:

form_for @user do |f|
  f.fields_for :credit_card do |ff|
    ff.label :number
    ff.text_field :number
  end
  f.submit
end

这有帮助吗?

由于评论中不允许格式化,因此我正在为此做出答案。

谢谢@twmills的回答,

我也是轨道的新手。我有一个问题,如果我有以下关系,它会起作用吗:

class User < ActiveRecord::Base
  has_many :credit_cards, :dependent => :destroy
  accepts_nested_attributes_for :credit_card
end
class CreditCards < ActiveRecord::Base
  belongs_to :user
end

在上述情况下,除非有父用户,否则无法创建信用卡对象。f.fields_for :credit_card do |ff|也会创建一个CraeditCard的对象@user到f吗?

根据我的理解,这是不可能的,因为如何告诉视图,要编辑哪张信用卡。

其次,在编辑时,这很好,但我可以在用户创建时做类似的事情。 即在用户创建时获取他的信用卡信息。

相关内容

  • 没有找到相关文章