ruby-on-rails - 具有并属于许多错误 - *_development.hunts_tasks' 不存在 :

标签 ruby-on-rails many-to-many associations rails-activerecord has-and-belongs-to-many

所以我正在开发一个项目,其中的任务构成了寻宝游戏。因此,当用户单击特定的狩猎时,我希望 show.html.erb 文件显示该狩猎以及与该狩猎相关的任务。两种模型(Hunt.rb 和 Task.rb)彼此之间具有“has_and_belongs_to_many”关系。我的 Controller 最初有此代码,但它显示了数据库中的每个任务,而不仅仅是与特定狩猎相关的任务。

  def show
    @hunt = Hunt.find(params[:id])
    @title = @hunt.name  
    @tasks = Task.paginate(:page => params[:page])
  end

所以我尝试了这个。

  def show
    @hunt = Hunt.find(params[:id])
    @title = @hunt.name    
    @tasks = @hunt.tasks.paginate(:page => params[:page]) 
  end

但随后它会抛出此错误:

    ActiveRecord::StatementInvalid in Hunts#show
    Showing /****/views/hunts/show.html.erb where line #10 raised:
    Mysql2::Error: Table '***_development.hunts_tasks' doesn't exist: SELECT  `tasks`.* FROM `tasks` INNER JOIN `hunts_tasks` ON `tasks`.`id` = `hunts_tasks`.`task_id` WHERE `hunts_tasks`.`hunt_id` = 100 LIMIT 30 OFFSET 0

这是 show.html.erb:

    <h1>Show Hunt</h1>

    <table>
      <tr>
        <td class="main">
          <h1>
            <%= @hunt.name %>
          </h1>
            <ul>        
              <% @tasks.each do |task| %>
                 <%= render task  %>
              <% end %>
            </ul>
        </td>
      </tr>
    </table>

你知道我搞砸了什么吗?

最佳答案

我建议您考虑从 has_and_belongs_to_many 切换到 has_many :through => tbl

class Hunt < ActiveRecord::Base
  has_many :hunttasks
  has_many :tasks :through => :hunttasks
end

class HuntTask < ActiveRecord::Base

  belongs_to :hunt
  belongs_to :task

class Task < ActiveRecord::Base
  has_many :hunttasks
  has_many :hunts :through => :hunttasks
end

从长远来看,您会发现它更加灵活且更易于使用,因此它是一个更好的起点。

当人们有疑问时,我通常不会指向 api,但在这种情况下 the api实际上确实有很好的信息和示例。

关于ruby-on-rails - 具有并属于许多错误 - *_development.hunts_tasks' 不存在 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9957719/

相关文章:

Mysql 到 Postgresql Rails PG::GroupingError: 错误:

ruby-on-rails - IntelliJ Ruby 语法高亮显示

javascript - 使用 Rails 3 和 jQuery 进行动态选择

php - 在面向对象编程中,哪个对象应该维护多对多关系? (如果有的话)

Grails:理解 groovy DomainClass.properties

ruby-on-rails - 从另一个模型的数组中检索唯一的关联模型

ruby-on-rails - 为什么 Rails Active Support deep_dup 不将数组的副本嵌入到正在克隆的对象中?

nhibernate - ORM 和多对多关系

java - 如何修复 org.springframework.beans.factory.UnsatisfiedDependencyException : Error creating bean with name 'name' ?

ruby-on-rails - 为什么ActiveRecord has_many使用delete_all而不是destroy_all?