我正在开发一个Rails 4应用程序,并在我的post方法中为api我想根据用户尝试创建的内容找到记录,如果它不存在则创建它,如果它确实更新了它的参数具有.我写了一些实际执行此操作的代码但执行起来需要一些时间.是否还有其他方法可以使用更少的代码或查询来执行相同的操作.
@picture = current_picture.posts.where(post_id: params[:id]).first_or_initialize
@picture.update_attributes(active: true, badge: parameters[:badge], identifier: parameters[:identifier])
render json: @picture
Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我有一个名为@appsActiveRecord 的数组,其中包含一个包含应用程序名称,环境等的记录.
我目前正在使用@apps.count数组中的应用程序数量,但我无法计算数组中的应用程序数量environment = 0.
我尝试@apps.count(0)但是没有用,因为每条记录都有多个字段.
我也尝试了类似@apps.count{ |environment| environment = 0}但没有发生的事情.
有什么建议?
我想知道是否有人知道如何从views文件夹中的文件夹中呈现.haml模板.我的目录设置是:
-Views (Folder)
-Get_Started (Folder)
-step_1.haml
-index.haml
Run Code Online (Sandbox Code Playgroud)
我想渲染step_1.haml但是当我尝试时:
haml :get_started/step_1
Run Code Online (Sandbox Code Playgroud)
它不起作用,我得到一个空白页面.有什么建议?我本来可以发誓我已经看过如何在某处做到这一点,但我不记得在哪里.
在我的Rails 4应用程序中,我想覆盖Active Record以创建具有7位随机数的ID的记录.比如4526378而不是1.我找到了一种方法来做到这一点,但我不确定它是正确的方法去做这件事.在我的模型中,我有:
class App < ActiveRecord::Base
after_initialize :add_id
def add_id
self.id ||= SecureRandom.random_number(9999999) if self.new_record?
end
end
Run Code Online (Sandbox Code Playgroud)
这是一种可以接受的方式吗?是否会发生任何冲突,若然后会发生什么,它会再次尝试使用新的SecureRandom创建记录.还有什么方法我可以在我的配置/初始化器中设置和initializer.rb文件自动为每个模型执行此操作?谢谢
好的,我在config/initializers目录中添加了一个名为active_record.rb的初始化程序.里面的代码看起来像:
class ActiveRecord::Base
before_create :set_id
def set_id
self.id = SecureRandom.random_number(9999999)
end
end
Run Code Online (Sandbox Code Playgroud)
上面的代码实际上工作得很好,但现在碰撞是个问题.在这段代码中,我可以执行检查以确保其独特性吗?如果它不生成一个新的.我也会改变它SecureRandom.hex,以便允许字母,所以碰撞的机会减少.