如何访问habtm关系中的数据

时间:2012-05-11 04:53:33

标签: ruby-on-rails ruby-on-rails-3

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

连接表调用documents_group created

模型

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创建     @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

现在我想访问所有文件coreespond到一个群组怎么做

1 个答案:

答案 0 :(得分:2)

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

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

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

@document.group = Group.find(params[:group_id])