Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Rails-更改备用新数据列的默认值_Mysql_Ruby On Rails_Database - Fatal编程技术网

Mysql Rails-更改备用新数据列的默认值

Mysql Rails-更改备用新数据列的默认值,mysql,ruby-on-rails,database,Mysql,Ruby On Rails,Database,这是一个Rails4+MySQL,但可能是一个一般的逻辑问题。我甚至没有找到与此相关的主题(仅前端a/B测试),因此,如果有相关问题,我深表歉意 我想做一个A/B测试,但要使用持久数据 考虑一个新的用户注册,其中表中的一列(我们称之为test)是一个布尔值,每个新注册将不同的布尔状态保存到用户表中每个新用户注册的新DB行 用户1寄存器->testUser1行中的值为false 用户2寄存器->testUser2行中的值为true 用户3寄存器->test用户3行中的值为false 用户4寄存器-

这是一个Rails4+MySQL,但可能是一个一般的逻辑问题。我甚至没有找到与此相关的主题(仅前端a/B测试),因此,如果有相关问题,我深表歉意

我想做一个A/B测试,但要使用持久数据

考虑一个新的用户注册,其中表中的一列(我们称之为
test
)是一个布尔值,每个新注册不同的布尔状态保存到用户表中每个新用户注册的新DB行

用户1寄存器->
test
User1行中的值为
false

用户2寄存器->
test
User2行中的值为
true

用户3寄存器->
test
用户3行中的值为
false

用户4寄存器->
test
用户4行中的值为
true

等等

有没有办法在Rails中实现这一点?或者这是一个DB/MySQL问题


谢谢

我可以看到两个选项:在创建之前使用Rails的回调
(或者在验证之前使用
),或者在插入之前使用MySQL
触发器

Rails回调:

before_create do
  self.test = !User.order(:id).last&.test.present?
end

在用户中,
在创建之前{self.test=!User.order(:id).last&.test.present?}
应该完成这个任务(第一个创建的用户将以
true
结束,第二个以
false
结束,第三个以
true
结束,依此类推)。否则,在
INSERT
语句之前的MySQL触发器可以做完全相同的事情,但是在DB上level@MrYoshiji听起来不错,非常感谢!请将其作为答复提交,以便我批准