Tag: ruby on rails 4

Rails 4.1.0尝试从子表更新父表时没有方法错误

我有2个rails模型,一个security和stock_quote模型,如下所示 class StockQuote < ActiveRecord::Base belongs_to :security, class_name: "Security", foreign_key: 'security_id' def self.price_on(date) where("date(created_at) = ?", date).sum(:high) end feed_url = "https://spreadsheets.google.com/feeds/list/1ncyK8uXoeLobVkdiSKQcYJr2joK_uN5QSBB3814GKaw/od6/public/values" def self.update_from_feed(feed_url) feed = Feedjira::Feed.fetch_and_parse(feed_url) unless feed.is_a?(Fixnum) add_entries(feed.entries) else puts "not an array\n" end end private def self.add_nonexistent_security(entry) a = StockQuote.create_security(security: entry.title.capitalize, category: "Uncategorized") end def self.save_entry(entry,security_id) unless exists? guid: entry.id contents = entry.content.split(',').map […]

使用Has And Belongs To Many关联两个已存在的对象

我正在使用Rails中的应用程序来展示动漫,这些动画已经并且属于许多语言,所以我建立了一个HABTM协会: class Anime < ActiveRecord::Base has_and_belongs_to_many :languages end class Language < ActiveRecord::Base has_and_belongs_to_many :animes end 现在我不知道如何在它们之间建立关联,我创建了许多语言记录来使用它们,例如,ID为1的语言为英语,ID为2的语言为西class牙语等…我想要只是在动画和语言之间建立联系,也就是说,如果我想说ID为1的动漫只有西class牙语,那么在表格中animes_languages我想创建值为anime_id: 1和language_id: 2的记录language_id: 2 ,仅此而已,但我相信如果我执行命令Anime.find(1).languages.create它将不会使用已有的语言,它将创建一种新语言,但我唯一想做的就是建立关联在现有动画与现有语言之间,所以,我该怎么做? 我应该为表animes_language制作一个模型吗? 这对我来说很困惑,因为当我在这里指定创建该表时,在这里输入链接描述 ,我创建了没有ID的表,它只有字段anime_id和language_id 。

用于在Devise上注册的Beta(白名单)电子邮件列表

我正在使用Devise,我正在尝试构建一个要求,即只有我的白名单中包含的电子邮件才能实际注册。 随着时间的推移,电子邮件将添加到该列表中。 意思是今天有10封电子邮件,明天又有20封以上。 但我还不知道如何实现这一目标。 我知道我必须Create my own Registrations Controller ,并且对于validation我认为我需要类似于此的东西: before_validation :whitelisted? def whitelisted? unless WhiteList.exists?(:email => email) errors.add :email, “is not on our beta list” end end 但是,我对如何开始或继续这一点毫无头绪。 我甚至都不知道这是不是最好的做法。 如何将电子邮件添加到该白名单,哪些甚至是白名单? 如果有人可以通奸友好到足以向我解释这一点。

Rails 4.0.0中的ActiveModel禁止错误

我正在处理嵌套的属性表单。 这些是两个模型.. Employee.rb class Employee :employeeID, foreign_key: :employeeID accepts_nested_attributes_for :employee_info end EmployeeInfo.rb class EmployeeInfo < ActiveRecord::Base belongs_to :employee, primary_key: :employeeID, foreign_key: :employeeID validates_uniqueness_of :employeeID end 我在_form.html.rb中有我的表单 × prohibited this shop from being saved: 和控制器中的更新方法 def update respond_to do |format| p “——————————” p employee_params if @employee.update(employee_params) format.html { redirect_to @employee, notice: ‘Employee was successfully updated.’ } […]

使用ActiveRecord在Rails中实现复杂的关系

我的另一个问题 : 我需要做的是:用自己的指定信息字段创建多个类别(即,汽车与Pets有不同的字段),一旦创建了这样的类别,我将调用我需要的命令,每个类别的新表将会做成。 我知道我可以将所有字段存储为某种字符串,然后处理它以正确显示它,但我需要为我的Web应用程序提供高级搜索function,并为每个类别创建单独的表似乎是实现它的最佳方式。 我真的很想听听这个的替代方案 所以我有这种情况,我需要类别来保存该特定类别所需的所有输入字段。 所以在管理中,我有这样的表格,我可以将类别名称,一些其他相关信息添加到类别本身,然后这些字段将收集有关在制作时向用户呈现的HTML字段的信息。进入这个特定类别。 例如,这将是一个狗类: 分类名称:狗 启用类别:1 分类父母:宠物 领域: 标题 – 文本字段(将自动添加到每个类别) 品种 – 选择领域 年龄 – 数字字段 颜色 – 文本字段 价格 – 数字字段(将自动添加到每个类别) 描述 – 文本区域字段(将自动添加到每个类别) 所以现在在这个阶段,当用户为Dog类别创建所有这些特定字段时,我无法确定当用户点击提交按钮以保存此类别时会发生什么。 我想到了这两个解决方案: 为每个新类别创建一个新模型/表(上面的读取链接问题),将所有HTML字段作为列,并在categories表上存储一行,其中包含有关此类别的一些基本信息 将所有内容存储在categories表中,并有一个fields_json列,它将存储所有HTML字段信息(我实际上不会存储HTML,但基本信息是字段的内容,然后在控制器中动态创建HTML表单字段)作为JSON字符串。 我可以在create很好地呈现这些字段,但是在update时填充这些字段(可能)会很麻烦,搜索function对于这种替代方案来说效率不高。 所以我正在寻找的是第三种选择,所以我可以解决我的问题。 什么是解决此问题的有效方法,并能够使用不同的输入字段的类别,并能够有效地执行这些类别的搜索? 我正在开发的项目是在Ruby on Rails 4中创建的,数据库是在MySQL中创建的。

在rails中调用ajax中的update方法后,在索引视图中更新div?

我有一个包含post列表的页面,我使用ajax使用will_paginate进行分页,每个post附近都有一个”Like” button 。 如果用户点击“赞”按钮,那么我需要update表格中的喜欢计数,我想将“喜欢”按钮更改为”Dislike” 。 比方说,例如,如果我在post的第二页,我点击“赞”按钮,我需要调用我的更新方法,我怎么能回到同一页面并使用ajax更改按钮。 如果我的更新逻辑在同一索引方法中,我可能会这样做但如果我的逻辑位于update方法中,我怎么能替换index.html.erb的内容。 请帮我。 谢谢。

ActiveRecord :: StatementInvalid:找不到表

我运行rake db:migrate,schema.rb看起来正确,当我在rails dbconsole中运行.tables时,我可以看到我正在寻找的表。 我以前做过回滚,但最后我运行了rake db:reset。 还有其他想法吗? Rails 4,Ruby 1.9.3 schema.rb: `ActiveRecord::Schema.define(version: 20130501043644) do create_table “playlists”, force: true do |t| t.string “name” t.datetime “created_at” t.datetime “updated_at” end create_table “songs”, force: true do |t| t.string “name” t.string “artist” t.string “soundcloud” t.datetime “created_at” t.datetime “updated_at” end create_table “songs_playlists”, id: false, force: true do |t| t.integer “song_id” t.integer “playlist_id” […]

如何根据布尔值计算两次相同的字段?

我想通过自定义选择和连接来修复我的N + 1计数问题。 我的post和标签之间有多对多的关系。标签可以被确认或未经确认。 我想在我的postselect语句中包含字段tags_confirmed_count和tags_unconfirmed_count(所以我可以避免以后为每个问题计算标签)。 我已经为以下查询的post执行了计数标记: Post.joins(:tags).select(“posts.*, COUNT(tags.id) AS tags_count”).group(“posts.id”) 现在,对于将字段确认设置为true而一次为false的标记,我找不到计数标记的解决方案。 我试过这种方式,但是我这样我只计算确认的那些,但不是未经证实的那些: Post.joins(:tags).select(“posts.*, COUNT(tags.id) AS tags_confirmed_count”).group(“posts.id”).where(“tags.confirmed = true”)

除非定义了aws-s3 gem? @@ {:instance_writer =>真}

我试图将aws-s3 gem与最新版本的Rails(4.1.0)集成,并在启动服务器时收到此错误: aws-s3-0.6.3/lib/aws/s3/extensions.rb:223:in `class_eval’: ///.rvm/gems/ruby-1.9.3-p385/gems/aws-s3-0.6.3/lib/aws/s3/extensions.rb:223: syntax error, unexpected $undefined (SyntaxError) unless defined? @@{:instance_writer=>true} 有没有人有任何想法? gem的大部分尚未更新超过两年,所以我认为它可能最终会过时。

将HTML返回给AJAX Rails调用

在阅读David Heinemeier Hansson关于服务器生成的javascript的博客文章之后 ,我决定回顾一下我在Rails应用程序中进行AJAX调用的方法。 David建议创建一个.js.erb模板,它只是嵌入了服务器上生成的ruby代码的javascript,而不是在客户端javascript中进行任何DOM操作。 另一种方法当然是简单地在客户端执行所有操作,并且(例如)从服务器返回表示更新对象的JSON对象,并使用javascript来执行所有DOM操作。 我不喜欢第一种方法有两个原因: 1)我在我的应用程序中使用HAML和Coffeescript,并且觉得通过使用vanilla javascript和ERB会不断地使用不同语言的代码膨胀我的代码库(也许可以创建.coffee.haml模板而不是js.erb,我不知道) 2)我真的不喜欢“乱丢”我的视图文件夹的想法,主要是javascript文件,嵌入了一点ruby。 正如大卫在他的博客文章中谈到的那样,第二种方法非常依赖于客户端javascript,这可能导致客户端javascript代码膨胀,并且可能需要客户端模板,这在最坏的情况下可能意味着几乎是模板数量的两倍。 我决定采用的方法(并且想要询问是否完全是愚蠢的方式)如下: 1)设置remote: true标志,使链接和表单利用AJAX发布到服务器。 2)在我的控制器中,处理所有内容为html,如果请求是AJAX请求,则只需渲染而不进行布局: render partial: ”, layout: false if request.xhr? 。 这只是返回partial的HTML,并评估ruby代码。 3)在资产javascript文件中(例如.js.coffee ),听取ajax:success并从响应中追加HTML。 我喜欢这种方法,因为(在我相当简单的应用程序中)这允许我将所有代码保存在HAML / Coffeescript中,并避免使用任何javascript模板。 我意识到如果应用程序的复杂性增加,这个问题可能会有不同的特性,但我仍然觉得这是一个有效的问题:这是一个不好的方法来为Rails应用程序实现基于AJAX的架构(如果是这样的话) ,为什么?即有什么理由为什么从AJAX调用返回HTML而不是JSON是一个坏主意?)或者这是我应该继续使用的东西? 谢谢 :-)