ruby-on-rails - has_many 通过与 id 以外的键关联

标签 ruby-on-rails associations

我需要创建一个 has_many :through 关联,其中一个外键不是模型 ID,而是名称

class User < ActiveRecord::Base  
  has_many :ownerships
  has_many :articles, :through => :ownerships
end

class Article < ActiveRecord::Base  
  has_many :ownerships
  has_many :users, :through => :ownerships
end

class Ownership < ActiveRecord::Base
  belongs_to :user
  belongs_to :article
end




create_table "ownerships", :force => true do |t|
    t.integer  "user_id"
    t.string   "article_code"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

我尝试将foreign_keys分配给关联,但没有成功。

有没有办法使用内置的 RoR 关联来实现我的目标?

最佳答案

class Article < ActiveRecord::Base  
  has_many :ownerships, :foreign_key => :article_code, :primary_key => "code"
  has_many :users, :through => :ownerships
end

class Ownership < ActiveRecord::Base
  belongs_to :user
  belongs_to :article, :foreign_key => :article_code, :primary_key => "code"

end

关于ruby-on-rails - has_many 通过与 id 以外的键关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17848908/

相关文章:

ruby-on-rails - 在 Rails 中动态包含对象的关联

ruby-on-rails - Rspec 和 FactoryGirl : SystemStackError: stack level too deep

javascript - CoffeeScript 为对象(命名类)生成动态变量名称

ruby-on-rails - 没有外键的 ActiveRecord 关联

ruby-on-rails - 做 has_many :through associations work for models that only exist in memory?

javascript - 付费成员(member) Stripe Ruby

ruby-on-rails - Ruby on Rails —— 不是 grokking

ruby-on-rails - ActiveRecord 关联

javascript - 如何在与 Sails 0.10.x 的一对多关系中引用关联模型

ruby-on-rails - Rails 4 通过方法查找或创建不起作用