小编ny9*_*y95的帖子

Rails ActiveRecord创建或查找

我正在开发一个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)

ruby activerecord ruby-on-rails ruby-on-rails-4

10
推荐指数
1
解决办法
6687
查看次数

如何计算具有特定属性值的数组中的项?

在我的应用程序中,我有一个名为@appsActiveRecord 的数组,其中包含一个包含应用程序名称,环境等的记录.

我目前正在使用@apps.count数组中的应用程序数量,但我无法计算数组中的应用程序数量environment = 0.

我尝试@apps.count(0)但是没有用,因为每条记录都有多个字段.

我也尝试了类似@apps.count{ |environment| environment = 0}但没有发生的事情.

有什么建议?

ruby activerecord ruby-on-rails ruby-on-rails-4

8
推荐指数
2
解决办法
4607
查看次数

视图中的HAML文件夹

我想知道是否有人知道如何从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)

它不起作用,我得到一个空白页面.有什么建议?我本来可以发誓我已经看过如何在某处做到这一点,但我不记得在哪里.

ruby haml rubygems sinatra

3
推荐指数
1
解决办法
555
查看次数

覆盖ActiveRecord ID

在我的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,以便允许字母,所以碰撞的机会减少.

ruby activerecord ruby-on-rails

2
推荐指数
1
解决办法
489
查看次数