我已经完成了大约十亿次搜索,并尝试了很多东西,但我仍然遇到错误。我最近改为通过一个名为joinable的模型(也许这就是问题),并且我似乎无法让事情顺利进行。我的一部分认为它有点小,因为我对它有所了解,但我不确定我是否正确地完成了它。我也在使用设计。
以下是我认为的所有相关部分
用户
class User < ActiveRecord::Base
acts_as_voter
has_many :joinables
has_many :pits, through: :joinables
has_many :comments
enum role: [:user, :vip, :admin]
after_initialize :set_default_role, :if => :new_record?
class Pit < ActiveRecord::Base
validates :topic, :author, :summary, presence: true
acts_as_taggable
acts_as_votable
has_many :comments
has_many :joinables
has_many :users, through: :joinables
mount_uploader :image, ImageUploader
我创建了一个名为“joinable”的独立表,现在我不知道如何填充它。我可以创建一个用户,但不能创建一个坑。我是否需要改造我的控制器,或者他的东西很小我可能会丢失?我得到了这个想法,但是基于我到目前为止所读到的所有内容,一些小细节都是模糊的。我甚至尝试了一个名为Pit_Users的连接表的HABTM。
我目前正在“无法找到表格'加入”
来自我的控制器
def create
@pit = current_user.pits.create(pit_params)
最近的迁移
class Joinable < ActiveRecord::Migration
create_table :joinable do |t|
t.integer :pit_id, :user_id
t.timestamps
end
end
我尝试了许多具有类似错误的组合。许多教程/指南都有很好的基础知识,但似乎遗漏了一些细节。那或我只是想念他们。无论如何。如果有更多知识渊博的人可以指出可能是明显的错误,那就会喜欢它。谢谢。
答案 0 :(得分:1)
解决方案是运行rails generator for model
从控制台运行
rails generate model Joinable pit:references user:references
删除
的迁移文件class Joinable < ActiveRecord::Migration
create_table :joinable do |t|
t.integer :pit_id, :user_id
t.timestamps
end
end
运行rails generator
后,使用model
时,您将获得Joinable
关系所需的through
,并为您创建适当的迁移。
答案 1 :(得分:1)
在迁移文件中,它应该是:
class Joinables < ActiveRecord::Migration
create_table :joinables do |t|
t.integer :pit_id
t.integer :user_id
end
end
在app / models / joinable.rb中,应该有:
class Joinable < ActiveRecord::Base
belongs_to :user
belongs_to :pit
end
您可以验证它是否在Rails控制台上运行。试试这个以获得关联的Pit记录:
user_1 = User.create( ... )
pit_1 = user_1.pits.create!( ... )
pit_1.users.first # should give you user as user_1