Chr*_*len 5 ruby ruby-on-rails has-and-belongs-to-many
我有一组称为"任务"和"帖子"的资源,并且彼此之间存在has_and_belongs_to_many(HABTM)关系.
还有一个连接其值的连接表.
create_table 'posts_tasks', :id => false do |t|
t.column :post_id, :integer
t.column :task_id, :integer
end
Run Code Online (Sandbox Code Playgroud)
所以我的问题是如何检查从@ post.tasks创建的数组中是否存在特定任务的id?
irb(main):011:0> @post = Post.find(1)
=> #<Post id: 2, comment: "blah blah", created_at: "2011-10-18 03:40:30", updated_at:
irb(main):012:0> @post.tasks
=> [#<Task id: 1, description: "Test 1", created_at: "2011-10-18 03:
22:05", updated_at: "2011-10-18 03:22:05">, #<Task id: 3, description: "Test 3",
created_at: "2011-10-18 03:22:21", updated_at: "2011-10-18 03:22:21
">]
Run Code Online (Sandbox Code Playgroud)
所以我的问题是什么写的红宝石方式"@task = Task.find(2)"存在于@ post.tasks中,如果是这样,返回true还是false?
Chi*_*tan 13
@post.tasks.where(:id => task_id).present?
Run Code Online (Sandbox Code Playgroud)
与Gabelsman建议的相比要轻得多.
@post.tasks.map(&:id).include?(task_id)
Run Code Online (Sandbox Code Playgroud)
task_id您要检查的任务的ID 在哪里.为了解释这一点,您将获取任务列表,将它们映射到其ID数组,然后检查有问题的ID是否在该数组中.如果你不熟悉map你应该检查出来,它真棒.
| 归档时间: |
|
| 查看次数: |
4735 次 |
| 最近记录: |