- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当使用 Rails 方法 find_or_create_by 时,它属于模型还是 Controller ?我很难理解如何实际实现此方法。
我希望我的 Rails 应用程序接受来自用户的 JSON 消息。用户会将数据发送回服务器,以便将其保存在数据库中。也就是说,我假设用户必须使用“POST”或“PATCH”方法来存储或更新我服务器上的数据。当我查看我的路线时,创建操作使用“POST”方法。
我已阅读以下 Rails 文档,但它没有向我阐明任何内容。 http://guides.rubyonrails.org/active_record_querying.html#find-or-create-by
我会像这样在创建操作中放置 find_or_create_by 方法吗?还是它属于其他地方?它在创建操作中似乎不正确...
class WifiNetworksController < ApplicationController
def create
@wifi_network = WifiNetwork.find_or_create_by(bssid: params[:bssid],
ssid: params[:ssid],
channel: params[:channel], etc...)
end
end
最终我想要:
感谢您的宝贵时间!
最后更新 - 感谢大家的宝贵建议!我不得不听取大家的一些建议才能让它发挥作用!下面是我最终所做的。似乎运行良好,没有错误。
def create
respond_to do |format|
if @wifi_network = WifiNetwork.find_by(bssid: wifi_network_params[:bssid])
# Logic for checking whether to update the record or not
@wifi_network.update_attributes(wifi_network_params) if @wifi_network.rssi < params[:rssi]
format.json { render :nothing => true }
else
# Must be a new wifi network, create it
@wifi_network = WifiNetwork.create(wifi_network_params)
format.json { render :nothing => true }
end
end
end
最佳答案
如果你使用强参数,你可以在你的 Controller 中这样做:
def create
@wifi_network = WifiNetwork.find_or_create_by(bssid: wifi_network_params[:bssid])
@wifi_network.update_attributes(wifi_network_params)
end
然后当用户像这样 curl 时:
curl -X POST localhost:3000/wifi_networks -d "wifi_network[bssid]=bssid1&wifi_network[ssid]=ssid1&wifi_network[channel]=channel1"
您的创建操作将通过它的 bssid 查找 WifiNetwork 并更新 ssid 和 channel 属性,或者如果它不存在,它将使用 bssid 参数创建一个 WifiNetwork,然后使用其余的更新新创建的记录属性。要小心,因为如果其他属性的 wifi_network_params 为空,它们会将参数更新为 nil。
关于ruby-on-rails - 在哪里使用 find_or_create_by 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23529515/
我正在使用 @current_device ||= Device.find_or_create_by!(udid: request.headers["udid"]) 有时会出现竞争条件,由于网络行为,
我想向我的 Controller 提交一个产品 ID 和一个零售商 ID,如果数据库中存在该组合,我想用提交的参数更新该记录,如果不存在,则创建一个新记录。 我的 Controller 在下面,目前我
我正在创建一个 Rails 库应用程序,其中流派 has_many书和一本书belongs_to一种流派。我需要使用表单对象,因为我的数据模型最终会有多个多对多关系,并且因为我想学习如何使用表单对象。
我想像这样的查询。 Movie.find_or_create_by_title(title: 'foo').photos.find_or_create_by_name(name: 'bar') 给定的
当使用 Rails 方法 find_or_create_by 时,它属于模型还是 Controller ?我很难理解如何实际实现此方法。 我希望我的 Rails 应用程序接受来自用户的 JSON 消息
active-record 中有一个方便的动态属性,称为 find_or_create_by: Model.find_or_create_by_(: => "") 但是如果我需要通过多个属性来 fin
Mongoid 提供方法 create 和 create!比如 Artist.create(name: "Pablo Picasso") 或 Artist.create!(name: "Pablo P
我正在尝试使用 ActiveRecord 的 find_or_create_by 方法,我需要返回记录的 ID。当此方法创建新记录时,会发生这种情况。但是,如果记录已经存在,则 ID(连同 creat
我有一个user 模型和一个town 模型。一个用户属于一个城镇: # models/user.rb class User prohibited this user f
我正在使用这段代码: item = Item.find_or_create_by(:name => title.strip) if item.changed? results.newItemsC
我正在关注 http://railscasts.com/episodes/102-auto-complete-association 一切似乎都很好。我正在尝试即时创建发票和客户。它确实有效。一切都很
是否可以使用动态查找/创建方法跳过验证? 例如,对于常规保存,我可以执行以下操作: p = Post.new p.title = nil p.body = nil p.save(:validate =
我有一个使用 Mongoid 的 find_or_create_by 方法的网络应用程序。 poll = Poll.find_or_create_by(fields) 在我们投入生产之前,我尝试运行故
在 mongoid 中使用 find_or_create_by 时有没有办法处理并发? 我正在使用 Tag.find_or_create_by(name: "foo") 来标记我的应用程序中的一些项目
假设我有一个名为Task 的模型。我想find_or_create_by一些任务。 t = Task.where(done: false).find_or_create_by(title: 'epic
我在使用 find_or_create_by 时遇到问题在 has_many through协会。 class Permission :permissions end class User ha
我想使用 find_or_create_by,但此语句不起作用。它不会“查找”或“创建”其他属性。 productproperty = ProductProperty.find_or_create_b
我正在尝试运行一种方法,如果存在(表 Hashtag 列标签)标记,它会将 View 计数更新为 1。否则它将创建一个新行,默认 View 计数为 0 并且标记为 @hashtag scrubbed
我有一个应该发送信息的表单。输入之一是“empresa_id”,它由一个集合表示。我已经在服务器中 checkin 了发送我想要的信息的表单。问题是当我运行 find_or_create_by 时,这
在我的 Rails 应用程序中,我想通过他们的电子邮件查找用户,或者如果用户不存在,则使用该电子邮件以及一些其他属性创建一个。是否有比下面的代码更简单的方法来执行此操作,也许使用 find_or_cr
我是一名优秀的程序员,十分优秀!