标签: has-and-belongs-to-many

Yii框架多对多的关系

在Yii框架中保存和更新多对多关系的方法是什么?

php many-to-many has-and-belongs-to-many yii

11
推荐指数
1
解决办法
2万
查看次数

尝试使用accepts_nested_attributes_for和has_and_belongs_to_many,但未填充连接表

我正在学习RoR并尝试使用accepts_nested_attributes_for和has_and_belongs_to_many来提交传统上是两种形式的信息.我在一些网站上看到它们兼容,有些网站不兼容,有些网站不知道.作为参考,我使用的是Rails 2.3.4.我尝试使用嵌套模型上的Ryan's Scraps教程对我的解决方案进行建模

从我试图调试,似乎我有两个问题,但我不知道为什么.

  1. 当我提交带有嵌套模型的表单时,只会发布部分嵌套模型信息.我只获得第一个字段,而不是用户可能选择的"n"个字段
  2. 在发布的单个字段中,没有为我为HABTM关系创建的连接表中插入任何行.

这是我的插入尝试的一段代码和相应的日志:

律师模型:

class Attorney < ActiveRecord::Base 
  has_and_belongs_to_many :associations
  accepts_nested_attributes_for :associations, :reject_if => proc { |a| a['name'].blank? }
end
Run Code Online (Sandbox Code Playgroud)

协会模型:

class Association < ActiveRecord::Base
  has_and_belongs_to_many :attorneys
  accepts_nested_attributes_for :attorneys
  validates_presence_of :name, :message => "Please enter an association name."
end
Run Code Online (Sandbox Code Playgroud)

律师控制员:

def new
  @attorney = Attorney.new
  @attorney.associations.build

  respond_to do |format|
    format.html # new.html.erb
    format.xml  { render :xml => @attorney }
  end
end

def create
  @attorney = Attorney.new(params[:attorney])

  respond_to do |format|
    if @attorney.save
      flash[:notice] = …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails has-and-belongs-to-many

11
推荐指数
1
解决办法
1万
查看次数

具有has_and_belongs_to_many关系的acts_as_list

我找到了一个名为acts_as_habtm_list的旧插件 - 但它适用于Rails 1.0.0.

这个功能现在是在acts_as_list中构建的吗?我似乎无法找到任何相关信息.

基本上,我有一个artists_events表 - 没有模型.通过指定的两个模型处理关系:has_and_belongs_to_many

在这种情况下如何指定订单?

ruby-on-rails has-and-belongs-to-many ruby-on-rails-plugins acts-as-list

10
推荐指数
1
解决办法
2948
查看次数

如何在rails中建立多对多的关系

我是rails的新手,我正试图在我的rails项目中建立多对多的关系.我有一个小策略,但我不确定它是否正确.

目标: 我有一个用户表和一个组表.用户可以是许多组的一部分,每个组可能有许多用户.

战略:

  1. 将用户迁移设置为name:string
  2. 将Group migration设置为name:string
  3. 设置Join表迁移
  4. 设置用户模型,使其具有has_and_belongs_to_many:groups
  5. 设置组模型,使其具有has_and_belongs_to_many:users

这是正确的策略吗?谢谢!

来自答案的Railcast摘要: 对于那些感兴趣的人 - Railcast建议你使用has_many:通过关联,因为上面的策略有限制,你不能添加额外的关系特定信息.

退房:http://kconrails.com/tag/has_many/

migration ruby-on-rails associations has-and-belongs-to-many

10
推荐指数
1
解决办法
1万
查看次数

高效的ActiveRecord has_and_belongs_to_many查询

我有一个带有has_and_belongs_to_many关系的Page和Paragraph模型.给定一个paragraph_id,我想得到所有匹配的页面.例如:

pages = Paragraph.find(paragraph_id).pages.all
Run Code Online (Sandbox Code Playgroud)

但是,这需要两个查询.它可以在一个查询中完成:

SELECT "pages".* FROM "pages" 
INNER JOIN "pages_paragraphs" ON "pages_paragraphs"."page_id" = "pages"."id" 
WHERE "pages_paragraphs"."paragraph_id" = 123
Run Code Online (Sandbox Code Playgroud)

但这可以不用

  • 使用find_by_sql
  • 没有修改page_paragraphs表(例如添加id).

更新:

我的页面模型如下所示:

class Page < ActiveRecord::Base
  has_and_belongs_to_many :paragraphs, uniq: true
end
Run Code Online (Sandbox Code Playgroud)

activerecord ruby-on-rails has-and-belongs-to-many

10
推荐指数
2
解决办法
9926
查看次数

订购has_and_belongs_to_many关联

在我的rails应用程序中,我有两个与has_and_belongs_to_many相关的模型.这意味着有一个连接表.

想象一下我在游戏中添加用户的场景.如果我想添加用户,我会:

@game.users << @user
Run Code Online (Sandbox Code Playgroud)

假设我想知道我添加这些用户的顺序.我可以做这个:

@game.users.each do....
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 如果此列表保证每次都以相同的方式读取,是否排序?

  2. 如果是这样的话,那么在游戏中重新排序用户的干净方法是什么?

ruby-on-rails has-and-belongs-to-many rails-activerecord

9
推荐指数
2
解决办法
5400
查看次数

Rails 3.1 Ransack HABTM

Ransack是否支持HABTM?

拥有模型:

  • 购买HABTM类别
  • 类别HABTM商店

我可以使用ransack通过单一类别搜索商店吗?表格是什么样的?

search ruby-on-rails has-and-belongs-to-many ransack

9
推荐指数
2
解决办法
2010
查看次数

Rails:HABTM - 查找没有关联的所有记录

我有2个模型(Workout,Equipment)中有一个属于很多关系.如果我使用Workout.find(:all, :joins => :equipment, :conditions => "equipment.id = 5")它,但如果我使用Workout.find(:all, :joins => :equipment, :conditions => "equipment.id = null")它不会返回没有关联的记录.有任何想法吗?

ruby-on-rails has-and-belongs-to-many ruby-on-rails-3 ruby-on-rails-3.1

8
推荐指数
1
解决办法
4024
查看次数

ActiveAdmin不会保存很多并且属于很多字段

我有2个型号.类别和帖子.它们使用has_many_and_belongs_to_many关系进行连接.我检查了rails控制台,这种关系有效.

我在activeadmin中创建了复选框,使用此表单字段设置帖子类别:

f.input :categories, as: :check_boxes, collection: Category.all
Run Code Online (Sandbox Code Playgroud)

问题是当我尝试保存它时,因为保存了所有其他字段数据(标题,正文,元信息等),但即使我取消选中它,或者也检查了另一个类别,该类别保持不变.

我正在使用这样的强参数:

post_params = params.require(:post).permit(:title,:body,:meta_keywords,:meta_description,:excerpt,:image,:categories)
Run Code Online (Sandbox Code Playgroud)

请给我一些建议,让活跃的管理员也保存类别!

祝福,马特

has-and-belongs-to-many activeadmin

8
推荐指数
1
解决办法
3813
查看次数

Rails 4 has_and_belongs_to_many与includes语句无法正常工作

最近我遇到了rails 4和HABTM关系的神秘错误.首先我的Gemfile:

source 'https://rubygems.org'
gem 'rails', '~> 4.1.6'
gem 'pg'
Run Code Online (Sandbox Code Playgroud)

下一个.我的模特:

class User < ActiveRecord::Base
end

class Teacher < User
  has_and_belongs_to_many :resources, foreign_key: :user_id
end

class Resource < ActiveRecord::Base
  has_and_belongs_to_many :teachers, association_foreign_key: :user_id
end
Run Code Online (Sandbox Code Playgroud)

原始数据库数据:

select * from resources;
 id |         created_at         |         updated_at
----+----------------------------+----------------------------
  1 | 2014-10-13 08:24:07.308361 | 2014-10-13 08:24:07.308361
  2 | 2014-10-13 08:24:07.889907 | 2014-10-13 08:24:08.156898
  3 | 2014-10-13 08:24:08.68579  | 2014-10-13 08:24:08.884731
  4 | 2014-10-13 08:24:09.997244 | 2014-10-13 08:24:10.205753
(4 rows)

select * from users;
 id …
Run Code Online (Sandbox Code Playgroud)

postgresql ruby-on-rails has-and-belongs-to-many ruby-on-rails-4 rails-activerecord

8
推荐指数
1
解决办法
334
查看次数