jmc*_*tie 15 activerecord ruby-on-rails has-and-belongs-to-many
在Google上花了一整天,但找不到答案.:\
我在用户和Core_Values之间有HABTM关系.
class CoreValue < ActiveRecord::Base
has_and_belongs_to_many :users
class User < ActiveRecord::Base
has_and_belongs_to_many :core_values
Run Code Online (Sandbox Code Playgroud)
在我的控制器中,我需要做两件事:
对于#1,我有这个工作:
User.find(current_user.id).core_values.create({:value => v, :created_by => current_user.id})
Run Code Online (Sandbox Code Playgroud)
这将创建一个新的CoreValue:value和:created_by并创建关联.
对于#2,我尝试过一些东西,但似乎无法创建关联.
谢谢你的帮助!
von*_*rad 21
您可以使用非常有用的find_or_create方法分两步执行此操作.find_or_create将首先尝试查找记录,如果它不存在,则创建它.像这样的东西应该做的伎俩:
core_value = CoreValue.find_or_create_by_value(v, :created_by => current_user.id)
current_user.core_values << core_value
Run Code Online (Sandbox Code Playgroud)
一些说明:
v.如果它不存在并且已创建,则将其设置created_by为current_user.id.User.find(current_user.id),因为它将返回相同的对象current_user.current_user.core_values是一个数组,您可以使用它轻松地添加另一个值<<.为简洁起见,以下内容与上面的代码示例相同:
current_user.core_values << CoreValue.find_or_create_by_value(v, :created_by => current_user.id)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12961 次 |
| 最近记录: |