0

尝试实现 has_and_belongs_to_many 关系 一个文档有很多组 一组有很多文档

创建了一个连接表调用documents_group

模型

class Group < ActiveRecord::Base
  has_many :users
  has_and_belongs_to_many :documents
end

模型 2

class Documents < ActiveRecord::Base
  belongs_to :user
  has_and_belongs_to_many :groups
  has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100>" }
  before_post_process :resize_images

  def image?
    avatar_content_type =~ %r{^(image|(x-)?application)/(bmp|gif|jpeg|jpg|pjpeg|png|x-png)$}
  end

private

  def resize_images
    return false unless image?
  end
end

控制器创建 def create @document = Documents.all

 @document = Documents.create( params[:document] )

 @document.user_id = current_user.id
 @document.save
 redirect_to root_path
 end

迁移是

     def self.up
     create_table :documents_groups ,:id => false do |t|
      t.integer :documents_id
      t.integer :group_id
     end

    end

现在我想访问所有文档对应一个组怎么办

4

1 回答 1

2

要访问一个组的所有文档,只需调用#documents特定的组模型。例如:

Group.find(params[:id]).documents #=> Collection of groups documents as Array

不过,您可能会遇到问题,因为您似乎从未将新文档分配给组。您可以通过多种方式做到这一点,一种可能的方式是在@document.savein之前添加以下内容DocumentsController#create(假设您有一个名为 的参数group_id

@document.group = Group.find(params[:group_id]) 
于 2012-05-11T05:11:55.837 回答