- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的模型目前低于。
user.rb
class User < ActiveRecord::Base
has_many :authentications
end
authentication.rb
class Authentication < ActiveRecord::Base
belongs_to :user
belongs_to :social, polymorphic: true
end
facebook.rb
class Facebook < ActiveRecord::Base
has_one :authentication, as: :social
end
twitter.rb
class Twitter < ActiveRecord::Base
has_one :authentication, as: :social
end
Twitter
或 Facebook
来自
Authentication
的对象对象如下:
authentication.social
Twitter
或
Facebook
对象直接来自
User
对象以及使用
:through
调用单个方法的选项,如下所示:
user.socials
User
模型如下两个示例:
class User < ActiveRecord::Base
has_many :authentications
has_many :socials, through: :authentications, source: :social, source_type: "Twitter"
has_many :socials, through: :authentications, source: :social, source_type: "Facebook"
end
class User < ActiveRecord::Base
has_many :authentications
has_many :socials, through: :authentications, source: :social, source_type: ["Twitter", "Facebook"]
end
user.socials
等单一方法访问这些对象?
:source
和
:source_type
用于在
上使用多态关联:through
.
user.twitters
和
user.facebooks
而不是
user.socials
,我认为这些选项与其最初的概念相矛盾。
ruby 2.1.2p95
Rails 4.2.0.beta2
最佳答案
这是一个老问题,但我相信它会帮助某人。
我没有找到一个很好的解决方案,但我已经找到了一个可能很慢的简单解决方案。
您必须知道与您的(在您的情况下)身份验证模型相关联的所有可能实体。那么你的 User 模型应该有一个名为 socials
的方法。 .你应该有这样的事情:
class User < ActiveRecord::Base
has_many :authentications
has_many :twitters, through: :authentications, source: :social, source_type: "Twitter"
has_many :facebooks, through: :authentications, source: :social, source_type: "Facebook"
def socials
twitters + facebooks
end
end
关于ruby-on-rails-4 - 如何使用多个 source_type?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26644080/
我的模型目前低于。 user.rb class User < ActiveRecord::Base has_many :authentications end authentication.rb
出于某种原因,多态的源类型 has_many :through尽管设置了 :source_type,但关联始终为 0。 . 这是我的模型的样子...... 福: has_many :tagged_it
我得到了一些 Manager和 SoccerTeam模型。一名经理“拥有”许多足球队;经理也可以评论足球队,也可以评论其他经理: manager.rb # Soccer teams the manag
我有三个模型:用户、组织和角色。一个用户通过一个角色可以访问多个组织,一个组织可以通过其角色拥有多个用户。另外,用户可以通过角色访问其他模型,所以角色模型有一个名为“access_to”的多态belo
所以这是一个示例类 class Company { :investors => { :type => 'VcFirm'} } has_many :angels, through: :inve
我是一名优秀的程序员,十分优秀!