征求Rails协会反馈+来自Noob的问题

时间:2010-10-23 21:01:47

标签: ruby-on-rails activerecord ruby-on-rails-3 model associations

前言

如果你在freenode的#rubyonrails中闲逛,这可能听起来就像我2天前在那里问到的那样。在花了几个小时研究AR协会之后,在#rubyonrails的讨论之后,我仍然感到迷茫,所以我在这里问。 :)

目标

我主持了许多博客。我的目的是创建批量提交,我在帖子中选择我想要提交的帖子的博客,然后给批次提交提交日期。后来我想创建一个查询批次的工人,然后实际将帖子提交给它的相关博客。

困惑

我对如何设置关联和相应的表感到困惑。

以下是我对模特的看法。

class Blog < ActiveRecord::Base
  has_many :submissions
  has_many :posts, :through => :submissions
end


class Post < ActiveRecord::Base
  has_many :submissions
  has_many :blogs, :through => :submissions
end


class Submission < ActiveRecord::Base
  belongs_to :post
  belongs_to :blog
end

这是我对桌子的所作所为。

[Blogs]
id         :integer         not null, primary key
title      :string(255)
etc

[Posts]
id         :integer         not null, primary key 
subject    :string(255)
content    :text
etc

[Submissions]
id          :integer         not null, primary key
submit_date :datetime
post_id     :integer
forum_id    :integer
etc

问题

  • 我目前没有批量模型 - 我应该有吗?或者可以通过回溯提交来推断“批次”?
  • 如果我应该有一个Batches模型,这是否意味着Submisson模型会获得一个额外的外键?
  • 有没有更多的“铁路方式”来做这件事?
  • 欢迎任何其他意见!

非常感谢您阅读这篇巨大的帖子。

1 个答案:

答案 0 :(得分:1)

在提交表中,我建议您将forum_id更改为blog_id,以符合Rails ethos约定优于配置。否则,您需要指定forum_id是提交的foreign_key。

所以[首选]:

[Submissions]
id          :integer         not null, primary key
submit_date :datetime
post_id     :integer
**blog**_id    :integer
etc

或者:

class Blog < ActiveRecord::Base
  has_many :submissions, :foreign_key => "forum_id"
  has_many :posts, :through => :submissions
end

根据您的描述,我认为您不需要另一个模型而只需使用提交表上的submit_date字段。