gpt4 book ai didi

ruby-on-rails - 重命名 foreign_key 以在 Rails 约定中覆盖

转载 作者:数据小太阳 更新时间:2023-10-29 08:52:17 25 4
gpt4 key购买 nike

我在两个类之间有一个关联问题,所以我在这里有一个名为 Post 的类表

Class CreatePosts < ActiveRecord::Migration
def change
create_table :posts do |t|
t.string :post_type , null: false
t.text :content , null: false
t.integer :person_id
end
add_index :posts, :person_id
add_index :posts, :group_id
end
end

还有一个叫做Action

class CreateActions < ActiveRecord::Migration
def change
create_table :actions do |t|
t.string :target_type, null:false
t.integer :target_id
t.integer :upvote_count
t.timestamps
end
add_index :actions,:target_id
end
end

所以问题是我想将 target_is 作为外键关联到 Post 类,所以我这样做了

class Post < ActiveRecord::Base
has_one :action
end
class Action < ActiveRecord::Base
belongs_to :post , :class_name => 'Target', :foreign_key => 'target_id'
end

但是它不起作用,当我将 Action 对象分配给 Post 对象中的 action 方法时出现此错误

Mysql2::Error: Unknown column 'actions.post_id' in 'where clause': SELECT  `actions`.* FROM `actions`  WHERE `actions`.`post_id` = 6 LIMIT 1

有什么帮助吗?

最佳答案

需要在关联的两边设置外键:

class Post < ActiveRecord::Base
has_one :action, :foreign_key => 'target_id'
end
class Action < ActiveRecord::Base
belongs_to :post , :class_name => 'Target', :foreign_key => 'target_id'
end

http://guides.rubyonrails.org/association_basics.html#has_one-association-reference

http://guides.rubyonrails.org/association_basics.html#belongs_to-association-reference

关于ruby-on-rails - 重命名 foreign_key 以在 Rails 约定中覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9939214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com