我需要在故障单和用户表中创建一行...我只需要知道如何处理以防事务失败.
@ticket.transaction do
@ticket.save!
@user.save!
end
#if (transaction succeeded)
#.....
#else (transaction failed)
#......
#end
Run Code Online (Sandbox Code Playgroud)
另外,我要感谢所有参与堆栈溢出的人,帮助设计师学习更多编程......我感谢你们抽出时间回答n00b这样的问题:)
我有一个功能齐全的身份验证系统,其用户表有超过50列.它很简单,但它使用salt进行散列加密,使用电子邮件而不是用户名,并且还有两种不同类型的用户和管理员.
我希望将Devise身份验证合并到我的应用程序中,以增强电子邮件验证,忘记密码,记住我的令牌等额外部分......我只是想看看是否有人在收集时遇到任何建议或问题设计一个已经存在的用户结构.我的用户模型中的基本字段是:
t.string :first_name, :null => false
t.string :last_name, :null => false
t.string :email, :null => false
t.string :hashed_password
t.string :salt
t.boolean :is_userA, :default => false
t.boolean :is_userB, :default => false
t.boolean :is_admin, :default => false
t.boolean :active, :default => true
t.timestamps
Run Code Online (Sandbox Code Playgroud)
为了便于参考,这里是迁移的Devise字段:
t.database_authenticatable :null => false
t.confirmable
t.recoverable
t.rememberable
t.trackable
add_index "users", ["confirmation_token"], :name => "index_users_on_confirmation_token", :unique => true
add_index "users", ["email"], :name => "index_users_on_email", :unique => true
add_index "users", ["reset_password_token"], :name => "index_users_on_reset_password_token", :unique => true
Run Code Online (Sandbox Code Playgroud)
最终会变成架构中的这些实际字段:
t.string …Run Code Online (Sandbox Code Playgroud) 假设如下:
def create_new_salt
self.salt = self.object_id.to_s + rand.to_s
end
Run Code Online (Sandbox Code Playgroud)
为什么使用"自我"会更好.而不是实例变量'@salt'?
我一直在用谷歌地图和精彩的rails插件开发我的应用程序,期望发现当我将我的应用程序投入生产时,商业许可不会太昂贵.
然后我发现它每年花费10,000美元,到目前为止没有例外.
http://www.47hats.com/2009/07/google-maps-the-10k-gotcha/
当你的网站成功时,支付无限制使用费并不是一个糟糕的代价,但对于我们这些试图从头开始构建的东西,这是一个很高的代价.我看过Bing和雅虎,但他们对于定价是什么样的球场非常怀疑.最重要的是,我必须放弃我的漂亮的rails插件YM4R for Google maps ...
有没有人在那里使用地图API解决方案,不需要花费一条腿和一条腿来开始商业方面的工作?我不介意不使用插件,我只需要一些可行的,并且在开始时价格合理.
我注意到rails中常见的错误检查行是:
if @user.save!
Run Code Online (Sandbox Code Playgroud)
而不是像
Save
If Save is successful
Blah
Else
Blah
End
Run Code Online (Sandbox Code Playgroud)
所以我对"if @ user.save!"的理解 是它保存对象并返回true/false如果成功.如果我稍后再打电话,例如:
@user.save!
if @user.save!
blah
end
Run Code Online (Sandbox Code Playgroud)
我是否执行了两次保存查询?
我最近将我的数据库从MySQL切换到PostGres.我也使用GeoKit.当我使用已经播种的新数据库启动我的应用程序时,我收到以下错误:
PGError: ERROR: function radians(character varying) does not exist
LINE 1: ...COS(0.661045389762993)*COS(-2.12957994527573)*COS(RADIANS(ti...
^
HINT: No function matches the given name and argument types. You might
need to add explicit type casts.
Run Code Online (Sandbox Code Playgroud)
任何人都知道为什么现在这会破裂?我知道GeoKit仍然有效,因为当数据库被播种时,它仍然在每张票的模型中执行地理编码,它只是不能正确地进行距离计算.
开始Ruby问题:
我正在尝试查看字符串变量的内容是"个人""电子邮件"还是"密码".
我尝试着:
if params[:action] == "password" || "email" || "personal"
foo
else
don't foo
end
Run Code Online (Sandbox Code Playgroud)
但这不起作用并返回奇怪的结果,并使用IRB来玩"或"语句我不知道为什么会发生以下情况:
irb(main):040:0> a = "email"
=> "email"
irb(main):041:0> a == "password" || "email"
=> "email"
irb(main):042:0> a == "email" || "password"
=> true
Run Code Online (Sandbox Code Playgroud)
我只是想要一些东西,如果3个变量中的任何一个都是真的,无论它们处于什么顺序都返回true,否则返回false.有人想帮这个n00b吗?
ruby ×2
activerecord ×1
bing-maps ×1
devise ×1
geokit ×1
google-maps ×1
maps ×1
passwords ×1
plugins ×1
postgresql ×1
rubygems ×1