在Yii框架中保存和更新多对多关系的方法是什么?
我正在学习RoR并尝试使用accepts_nested_attributes_for和has_and_belongs_to_many来提交传统上是两种形式的信息.我在一些网站上看到它们兼容,有些网站不兼容,有些网站不知道.作为参考,我使用的是Rails 2.3.4.我尝试使用嵌套模型上的Ryan's Scraps教程对我的解决方案进行建模
从我试图调试,似乎我有两个问题,但我不知道为什么.
这是我的插入尝试的一段代码和相应的日志:
律师模型:
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) 我找到了一个名为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
我是rails的新手,我正试图在我的rails项目中建立多对多的关系.我有一个小策略,但我不确定它是否正确.
目标: 我有一个用户表和一个组表.用户可以是许多组的一部分,每个组可能有许多用户.
战略:
这是正确的策略吗?谢谢!
来自答案的Railcast摘要: 对于那些感兴趣的人 - Railcast建议你使用has_many:通过关联,因为上面的策略有限制,你不能添加额外的关系特定信息.
migration ruby-on-rails associations 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)
但这可以不用
更新:
我的页面模型如下所示:
class Page < ActiveRecord::Base
has_and_belongs_to_many :paragraphs, uniq: true
end
Run Code Online (Sandbox Code Playgroud) 在我的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)
我的问题是:
如果此列表保证每次都以相同的方式读取,是否排序?
如果是这样的话,那么在游戏中重新排序用户的干净方法是什么?
Ransack是否支持HABTM?
拥有模型:
我可以使用ransack通过单一类别搜索商店吗?表格是什么样的?
我有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
我有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)
请给我一些建议,让活跃的管理员也保存类别!
祝福,马特
最近我遇到了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
activeadmin ×1
activerecord ×1
acts-as-list ×1
associations ×1
many-to-many ×1
migration ×1
php ×1
postgresql ×1
ransack ×1
ruby ×1
search ×1
yii ×1