has_one WITHOUT嵌套属性。可能?

时间:2014-02-14 21:27:26

标签: ruby-on-rails

我有一个名为User的模型。

用户可以选择将一个帐户连接到外部资源。

目前,我使用has_many制作了所有内容。定期NEW / CREATE操作。 但我不希望他have_many对外部资源进行说明。

这可能吗? 现在,我看到的唯一选择是在注册时build_external_resource,然后在应用程序控制器&将所有内容提交到Devise控制器。蛮丑的。

只是希望他在注册时没有重新获得,但是在他喜欢的时候可以设置一个。

谢谢!

1 个答案:

答案 0 :(得分:0)

虽然你的问题很模糊,但我会看一下:

#app/models/user.rb
Class User < ActiveRecord::Base
    has_one :resource

    before_create :build_resource if Proc.new { |a| a.resource_id.present? }
end

#app/models/resource.rb
Class Resource < ActiveRecord::Base
    belongs_to :user
end

您的架构如下所示:

users
id | name | created_at | updated_at

resources
id | user_id | information | other | attributes | created_at | updated_at

如果您想要,则可以在用户new / create上设置资源。但是,如果未设置resource_id属性,则不会创建

这是你要找的吗?