小编cma*_*n77的帖子

Factory Girl:如何设置has_many/through关联

我一直在努力与has_many/throughFactory Girl 建立关系.

我有以下型号:

class Job < ActiveRecord::Base
  has_many :job_details, :dependent => :destroy
  has_many :details, :through => :job_details
end

class Detail < ActiveRecord::Base
  has_many :job_details, :dependent => :destroy
  has_many :jobs, :through => :job_details
end

class JobDetail < ActiveRecord::Base
  attr_accessible :job_id, :detail_id
  belongs_to :job
  belongs_to :detail
end
Run Code Online (Sandbox Code Playgroud)

我的工厂:

factory :job do
  association     :tenant
  title           { Faker::Company.catch_phrase }
  company         { Faker::Company.name }
  company_url     { Faker::Internet.domain_name }
  purchaser_email { Faker::Internet.email }
  description     { Faker::Lorem.paragraphs(3) }
  how_to_apply    { Faker::Lorem.sentence }
  location        "New …
Run Code Online (Sandbox Code Playgroud)

bdd ruby-on-rails factory-bot

29
推荐指数
1
解决办法
1万
查看次数

表单字段不是rails db模型的一部分

我在一个表单上有一个字段,我试图访问相应的模型,但它不是模型数据库表的一部分.处理这个问题的最佳方法是什么?这是不好的做法吗?

ruby-on-rails

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

如何使用rails form和jsonb postgres

我正在考虑在Rails4.2和Postgres4.1中使用新的jsonb功能.

我正在寻找创建一个代表用户配置文件(即技能集等)的模型,并将整个事物存储在单个jsonb数据集中.

所以表格会有:

id int
profile jsonb
timestamps
Run Code Online (Sandbox Code Playgroud)

我以为我基本上可以将所有配置文件数据存储在jsonb结构中,如下所示(这只是一个示例/概念):

{
  "basics": {
    "name": "John Doe",
    "label": "Programmer",
    "picture": "",
    "email": "john@gmail.com",
    "phone": "(912) 555-4321",
    "website": "http://johndoe.com",
    "summary": "A summary of John Doe...",
    "location": {
      "address": "2712 Broadway St",
      "postalCode": "CA 94115",
      "city": "San Francisco",
      "countryCode": "US",
      "region": "California"
    },
    "profiles": [{
      "network": "Twitter",
      "username": "john",
      "url": "http://twitter.com/john"
    }]
  },
"skills": [{
    "name": "Web Development",
    "level": "Master",
    "keywords": [
      "HTML",
      "CSS",
      "Javascript"
    ]
  }],
  "languages": [{
    "language": "English",
    "fluency": "Native speaker" …
Run Code Online (Sandbox Code Playgroud)

postgresql json ruby-on-rails ruby-on-rails-4 jsonb

9
推荐指数
2
解决办法
2259
查看次数

ActionController :: InvalidAuthenticityToken和域名

我发现使用诸如foo.bar.uk.com之类的域会导致在提交任何表单时Rails抛出ActionController::InvalidAuthenticityToken.

foo.bar.co.ukfoo.bar.co.com工作,但由于某种原因foo.bar.uk.com抛出错误.

某处是否有可接受的域/ TLD列表?

它还会在foo.bar.eu.com上抛出错误

更新:

删除:

:domain => :all
Run Code Online (Sandbox Code Playgroud)

从:

MyApp::Application.config.session_store :cookie_store, key: '_my_session', :domain => :all
Run Code Online (Sandbox Code Playgroud)

允许表单提交,但它不修复登录(即其他cookie相关的功能).

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

8
推荐指数
1
解决办法
614
查看次数

Sprockets错误Sprockets :: NotImplementedError:未实现自定义asset_path帮助程序

尝试在本地预编译资产时,我得到以下内容

RAILS_ENV=production bundle exec rake assets:precompile

rake aborted!
Sprockets::NotImplementedError: Custom asset_path helper is not implemented

Extend your environment context with a custom method.

    environment.context_class.class_eval do
      def asset_path(path, options = {})
      end
    end
/Users/cman/.rvm/gems/ruby-2.2.2@jbd-ruby2.2.2/gems/sprockets-3.6.0/lib/sprockets/context.rb:198:in `asset_path'
/Users/cman/.rvm/gems/ruby-2.2.2@jbd-ruby2.2.2/gems/sprockets-3.6.0/lib/sprockets/context.rb:218:in `font_path'
/Users/cman/.rvm/gems/ruby-2.2.2@jbd-ruby2.2.2/gems/font-awesome-rails-4.6.1.0/app/assets/stylesheets/font-awesome.css.erb:15:in `_evaluate_template'
Run Code Online (Sandbox Code Playgroud)

我不能为我的生活弄清楚为什么会这样 - 任何有关如何解决的建议将不胜感激!

更新

只有在我添加具有以下内容的初始化程序时,我才能进行预编译:

Rails.application.assets.context_class.class_eval do
  def asset_path(path, options = {})
    return ''
  end
end
Run Code Online (Sandbox Code Playgroud)

但是,如果我这样做,当我推送到我的暂存环境时,Bootstrap中的glyphicons有一个空路径,因此不会渲染:

font-face{font-family:'Glyphicons Halflings';src:url("");src:url("") format("embedded-opentype"),url("") format("woff"),url("") format("truetype"),url("") 
Run Code Online (Sandbox Code Playgroud)

更新2

如果我将初始化程序修改为如下所示,我在预编译bootstrap资产中获取了一个用于glypicons的路径,但它不是预编译的Glyphicon文件,而是非编译资产路径:

Rails.application.assets.context_class.class_eval do
  def asset_path(path, options = {})
    #return ''
    "/assets/#{path}"
  end
end

@font-face{font-family:'Glyphicons Halflings';src:url("/assets/bootstrap/glyphicons-halflings-regular.eot");src:url("/assets/bootstrap/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"),url("/assets/bootstrap/glyphicons-halflings-regular.woff") format("woff"),url("/assets/bootstrap/glyphicons-halflings-regular.ttf") format("truetype"),url("/assets/bootstrap/glyphicons-halflings-regular.svg#glyphicons_halflingsregular")
Run Code Online (Sandbox Code Playgroud)

这是我的gemfile.lock,因为它与assets/sprockets …

assets ruby-on-rails precompile sprockets rails-sprockets

8
推荐指数
1
解决办法
614
查看次数

使用带Heroku和CNAME的电子邮件

我正在HEROKU托管应用程序上设置MX记录并遇到问题.

我有两个CNAME的设置:

@ myapp.herokuapp.com
www myapp.herokuapp.com
Run Code Online (Sandbox Code Playgroud)

网站在上面的设置工作正常.我现在正尝试通过添加Google Apps MX记录来添加电子邮件支持.

@ ASPMX.L.GOOGLE.COM.  MX 10 1800  
Run Code Online (Sandbox Code Playgroud)

- 以及其他四个MX后退 -

Google Apps称它无法读取MX记录.这是因为它们与@CNAME记录冲突吗?如果是这样,我应该删除它并使用"Naked Domain"方法(改为设置三个A记录).Heroku让人觉得这种方法对于"@"非WWW的CNAME来说非常气馁.

谢谢您的帮助!

cname heroku

7
推荐指数
2
解决办法
4778
查看次数

Rails多字模型命名约定

我的数据库中有一个名为metadata_types的查找表,其中列出了我的应用程序使用的所有各种类型的元数据.

元数据是Metadatum的复数; 我应该调用表metadatum_types吗?换句话说,在这种情况下,多数应该是两个单词,还是只有第二个?那么相应的模型是否也应该是metadatum_type.rb(Class MetadatumType)?

ruby-on-rails naming-conventions models

5
推荐指数
2
解决办法
3032
查看次数

在操作邮件程序中附加远程 URL 文件作为附件

我有一个 ActionMailer 设置来从 S3 发送带有附件的电子邮件。我这样做:

def job_apply(current_tenant, applicant)
   @current_tenant = current_tenant
   @applicant = applicant

   file = open(applicant.resume.url).read
   attachments[applicant.resume] = file

   email_with_name = "#{@current_tenant.name} <#{@current_tenant.help_email}>"
   mail(from: email_with_name, to: applicant.job.apply_email, subject: "New Job Application")
 end
Run Code Online (Sandbox Code Playgroud)

申请人.resume.url 返回一个正确的 URL,我可以在浏览器中打开它并检索文件,但是我收到以下错误:

Message undefined method `ascii_only?' for #<ApplicantResumeUploader:0x007fe6bc5c28a8>
File    /Users/cmalpeli/.rvm/gems/ruby-1.9.3-p194@job_board/gems/mail-2.4.4/lib/mail/encodings.rb
Line    103
Run Code Online (Sandbox Code Playgroud)

这是 encodings.rb 中的代码:

 98     def Encodings.decode_encode(str, output_type)
 99       case
 100       when output_type == :decode
 101         Encodings.value_decode(str)
 102       else
 103         if str.ascii_only?
 104           str
 105         else
 106           Encodings.b_value_encode(str, find_encoding(str))
 107         end
 108       end
Run Code Online (Sandbox Code Playgroud)

我对从这里去哪里有点不知所措......

任何帮助,将不胜感激...

ruby-on-rails actionmailer

5
推荐指数
1
解决办法
4886
查看次数

Capybara、Selenium 和 Redactor 富文本编辑器

我在 Capybara 和 Selenium 方面遇到了一个有趣的问题。我有一些 Capybara 请求规范,要求在填写表单时启用 javascript。其中一种形式是使用 Redactor 富文本编辑器的文本区域。

<div class="control-group">
<%= f.label :description, "Description", class: "control-label" %>
    <div class="controls">
        <%= f.text_area :description, rows: 10, class: "redactor"%>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

当测试运行并且 Selenium 触发时(在 FF 和 Chrome 驱动程序中),Selenium 在执行以下命令时失败:

`fill_in "Description", with: "some description"`
Run Code Online (Sandbox Code Playgroud)

它返回的错误是:

Selenium::WebDriver::Error::InvalidElementStateError:
   Element is not currently interactable and may not be manipulated
Run Code Online (Sandbox Code Playgroud)

看来 Selenium 无法再识别富文本编辑器/文本区域了。如果我删除class="redactor"触发 Redactor JS 渲染描述文本区域的内容,它就可以正常工作。

所以我的问题是,1.有没有解决方法来填写它?2. 或者,我可以以某种方式禁用 redactor js 来进行此测试吗?

selenium rspec capybara redactor

5
推荐指数
1
解决办法
2361
查看次数

Glyphicons在生产轨道中没有正确预编译

使用Rails 4,我遇到了一个问题,即Bootstrap中的glyphicons没有被正确预编译.生成以下内容:

started GET "/assets/glyphicons-halflings-white-ed38e147e3f6e976c0a7ad59e4d628f3.png" for          127.0.0.1 at 2014-01-13 18:41:25 -0500
Started GET "/assets/glyphicons-halflings-white-ed38e147e3f6e976c0a7ad59e4d628f3.png" for 127.0.0.1 at 2014-01-13 18:41:25 -0500
Processing by ApplicationController#routing_error as PNG
Processing by ApplicationController#routing_error as PNG
  Parameters: {"path"=>"assets/glyphicons-halflings-white-ed38e147e3f6e976c0a7ad59e4d628f3"}
  Parameters: {"path"=>"assets/glyphicons-halflings-white-ed38e147e3f6e976c0a7ad59e4d628f3"}
  Rendered public/404.html (0.3ms)
  Rendered public/404.html (0.3ms)
Completed 404 Not Found in 17ms (Views: 3.4ms | ActiveRecord: 8.0ms)
Completed 404 Not Found in 17ms (Views: 3.4ms | ActiveRecord: 8.0ms)
Run Code Online (Sandbox Code Playgroud)

它在开发中工作正常.如果我config.assets.compile = true在production.rb中设置它似乎工作正常 - 但我理解基于这个SO问题是非常糟糕的: 资产:precompile生成的文件与stylesheet_link_tag(缺少摘要)在最小的rails 4中生成的url不匹配现场

在Rails 3.2中,这对我来说不是问题.

任何帮助将不胜感激!

heroku twitter-bootstrap ruby-on-rails-4

5
推荐指数
1
解决办法
1433
查看次数