我在Rails控制器中有2个实例变量:
@stories = Post.tagged_with("test").all(:order => "RANDOM()", :limit => 1)
@stories2 = Post.tagged_with("test").where('post_id not in (?)', [@stories]).all(:order => "RANDOM()", :limit => 1)
我不希望另一个实例变量与另一个实例变量相等,但它们都必须是"随机的" (我知道这在技术上并不是随机的)。是否可以设置一个变量随机,除了一个值?
答案 0 :(得分:2)
@stories, @stories2 = Post.tagged_with("test").all(order: "RANDOM()", limit: 2)
答案 1 :(得分:1)
您可以使第二个查询返回2,并执行一些逻辑来检查等效性
@stories = Post.tagged_with("test").all(:order => "RANDOM()", :limit => 1)
@stories2 = Post.tagged_with("test").where('post_id not in (?)', [@stories]).all(:order => "RANDOM()", :limit => 1)
@stories2.delete_at(@stories[0] == @stories2[0] ? 0 : 1);
使用上面的代码,如果第一个对象中的单个元素与第二个对象的单个元素相同,我们将其删除并使用另一个。如果它们不相同,我们会删除第二个数组中的“额外”故事。最后,每个实例变量在数组中都有一个项目,它们将不相同。