小编Sli*_*k23的帖子

嵌套has_many:通过rails 3

我知道Rails不支持嵌套的has_many:通过关系,虽然早在Rails 2之前就有关于补丁的谈话和开放票.

我确实遇到了一个非常光滑的插件,但是主分支机构不能与Rails 3一起工作,我对于在应用程序中使用它来完成任务关键任务犹豫不决,因此最近缺乏活跃的开发.那么 - 处理这些关系的最佳方式是什么?

class Author < ActiveRecord::Base
  has_many :contracts
  has_many :products, :through => :contracts

class Product < ActiveRecord::Base
  has_many :contracts
  has_many :orders
  has_many :authors, :through => :contracts

class Contracts < ActiveRecord::Base
  belongs_to :author
  belongs_to :product
Run Code Online (Sandbox Code Playgroud)

所以,通过将其添加到Author模型,能够获得订单将会很棒.

has_many :orders, :through => :products
Run Code Online (Sandbox Code Playgroud)

但是,唉,你不能 - 至少没有插件.所以,我的问题是,当唯一关联是在连接模型,合同之间时,访问所有作者订单的最佳方法是什么?

ruby-on-rails models rails-models ruby-on-rails-3

4
推荐指数
1
解决办法
3237
查看次数

更新宝石?

我正在使用twitter gem并且在一个方法中有一个错误 - Twitter需要身份验证,并且此方法已设置为用于身份验证的fals.似乎有人最近使用此提交修复了它:

https://github.com/jnunemaker/twitter/commit/4483ad062c5dd65b4adb13fb8da5efdaf550f35a#

但是,当我使用该方法时 - 我仍然会收到错误:

Twitter::Unauthorized: GET https://api.twitter.com/1/statuses/retweets/{id}.json: 401: Could not authenticate you.
Run Code Online (Sandbox Code Playgroud)

我尝试更新宝石.

gem update twitter
Updating installed gems
Nothing to update
Run Code Online (Sandbox Code Playgroud)

我也试过,更新捆绑,但没有运气.所以,我不确定如何将新代码添加到我的包中,以便它使用该方法进行身份验证?

ruby gem rubygems ruby-on-rails-3

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

计算rails验证中的单词

我正在使用以下验证来计算rails中的单词(我从Rails文档中获得了示例),但它并不真实:

validates :body, :length => {
    :minimum   => 50,
    :maximum   => 300,
    :tokenizer => lambda { |str| str.scan(/\w+/) },
    :too_short => "must have at least %{count} words",
    :too_long  => "must have at most %{count} words"
  }
Run Code Online (Sandbox Code Playgroud)

一个用户试图发布一个291个单词的东西(这是Word给出的计数)并且它被拒绝的时间太长了.我不确切地知道正在使用的表达式有什么问题,或者可能是一个很好的表达式来确保准确的字数.

regex ruby-on-rails

4
推荐指数
1
解决办法
1756
查看次数

Humanize rails选择帮手

我的模型中有以下内容:

  PRODUCTSTATES = %w[published coming_soon in_development cancelled]
Run Code Online (Sandbox Code Playgroud)

我正在使用它来填充表单中的下拉列表,我正在尝试humanize使列表看起来很漂亮,但似乎无法得到它.

  <%= f.select :status, Product::PRODUCTSTATES %>
Run Code Online (Sandbox Code Playgroud)

Product::PRODUCTSTATES.humanize 显然不起作用,也没有事先转换为字符串.

ruby-on-rails-3

4
推荐指数
1
解决办法
1821
查看次数

while循环在rails中创建多个记录

我正在构建一个用户可以购买跟踪号码的应用程序.我有一个订单模型和一个订单交易模型.如果订单事务从网关成功返回,我使用after_save回调来触发创建跟踪号并将它们插入数据库的方法.有时用户只订购一个,但如果他们订购的不止一个,我似乎无法创建和插入多个记录.

这就是我正在使用的东西 - 我从来没有像这样使用过循环,所以我不确定我做错了什么.

def create_trackables
      if self.success == true
        @order = Order.find(order_id)
        @start = 0
        while @start < @order.total_tokens
          @trackable_token = Tracker.create_trackable_token
          @start += 1
          @trackable ||= Tracker.new(
            :user_id => @current_user,
            :token => @trackable_token,
            :order_id => order_id
            )
        @trackable.save 
        end
      end
    end
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails ruby-on-rails-3

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

使用jQuery和jQueryui在datepicker中设置最小日期

我正在使用以下jquery和jqueryui来获取第一个datepicker的值并使其成为第二个的最小值 - 但我认为我需要将其链接到blur事件以确保作为#project_start更改,变量更改.我只是想不通怎么做.当我将.blur添加到第一个代码段的末尾时,它全部停止工作.

$( "#project_start" ).datepicker({
            dateFormat: 'yy-mm-dd',
            appendText: '(yyyy-mm-dd)', 
            showAnim: 'fade'
            })

var start = $("#project_start").val();

$( "#project_end" ).datepicker({
            dateFormat: 'yy-mm-dd',
            minDate: start,
            appendText: '(yyyy-mm-dd)', 
            showAnim: 'fade'
            });
Run Code Online (Sandbox Code Playgroud)

如何添加模糊事件,或者我应该使用其他一些事件监听器?

jquery jquery-ui jquery-ui-datepicker

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

无法将HashWithIndifferentAccess转换为String?

我有一个哈希发布到我的Rails应用程序,看起来像这样:

{"signed_request"=>"...",
 "buyer"=>"1064897036",
 "receiver"=>"1064897036",
 "order_id"=>"224539980951036",
 "method"=>"payments_get_items",
 "test_mode"=>"1",
 "order_info"=>{"description"=>"None",
 "image_url"=>"",
 "price"=>"1",
 "product_url"=>"",
 "title"=>"Premium Membership"}}
Run Code Online (Sandbox Code Playgroud)

我正在借用一些代码来解析它并发回相应的响应.首先,我解析已签名的请求,该工作正常,然后我构建订单信息以将其发送回服务器.这就是麻烦开始的地方,似乎:

 ...
        elsif method == 'payments_get_items'

                  order_info = params[:order_info]

                  item = JSON.parse(order_info)
              item['price'] = item['price'].to_i

              # for url fields, if not prefixed by http://, prefix them
              url_key = [ 'product_url', 'image_url' ]
              url_key.each do |key|
                if item[key][0..6] != 'http://'
                  item[key] = "http://#{item[key]}"
                end
              end

 # if payload['test_mode']
              if request.params['test_mode']
                update_keys = ['title', 'description']
                update_keys.each do |key|
                    item[key] = '[Test Mode] ' + item[key]
                end
              end

              data['content'] = …
Run Code Online (Sandbox Code Playgroud)

json ruby-on-rails-3

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

从数组中挑选随机元素

可能重复:
如何从数组中随机选取?

确保不选择不存在的项目的适当方法是什么?

 icons = %w[asterisk star arrow]
 random = rand(icons.length)
Run Code Online (Sandbox Code Playgroud)

要么

icons = %w[asterisk star arrow]
random = rand(icons.length -1)
Run Code Online (Sandbox Code Playgroud)

ruby

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

有没有办法过滤jQuery中没有触发事件的匹配元素?

我的页面上有很多.photo类的元素.

我这样选择它们:

 $('#photos-container .photo').hover ...
Run Code Online (Sandbox Code Playgroud)

有没有办法过滤掉那些没有触发悬停事件的元素?

jquery jquery-selectors

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

jQuery回调调用了两次

我正在关注Rails演员来实现订阅计费.它在这里:

http://railscasts.com/episodes/288-billing-with-stripe

我的代码几乎完全相同,但我将一些额外的字段传递给Stripe.麻烦的是,javascript中的错误消息总是在提交按钮被点击时显示错误消息...即使成功收费.我不确定Strip是否返回了触发错误的东西,或者是否存在JS问题.

jQuery ->
  Stripe.setPublishableKey($('meta[name="stripe-key"]').attr('content'))
  subscription.setupForm()

subscription =
  setupForm: ->
    $('#new_membership').submit ->
      $('input[type=submit]').attr('disabled', true)
      if $('#card_number').length
        subscription.processCard()
        false
      else
        true

  processCard: ->
    card =
      number: $('#card_number').val()
      cvc: $('#card_code').val()
      expMonth: $('#card_month').val()
      expYear: $('#card_year').val()
    Stripe.createToken(card, subscription.handleStripeResponse)

  handleStripeResponse: (status, response) ->
    if status == 200
      $('#membership_stripe_card_token').val(response.id)
      $('#new_membership')[0].submit()
    else
      $('#stripe_error').text(response.error.message)
      $('input[type=submit]').attr('disabled', false)
Run Code Online (Sandbox Code Playgroud)

这是用于错误处理的示例条带.他们首先翻转过程并测试错误:

function stripeResponseHandler(status, response) {
    if (response.error) {
        ...
        //show the errors on the form
        $(".payment-errors").html(response.error.message);
    } else {
        var form$ = $("#payment-form");
        // token contains id, last4, and card type …
Run Code Online (Sandbox Code Playgroud)

javascript coffeescript

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

多态 has_many:通过 Rails

我有一个标签模型,我希望它是多态的,但我不希望“视频”标签有五个记录,例如,我想创建一次标签并能够在各种模型上使用它。我已经在这里准备了一些有关这样做的问题,但我不太明白如何使其发挥作用。

所以我有:

class Tag < ActiveRecord::Base
  belongs_to :tagable, :polymorphic => true

end
Run Code Online (Sandbox Code Playgroud)

class Post < ActiveRecord::Base
  has_many :tags, :through => :tag_assignments

end
Run Code Online (Sandbox Code Playgroud)

class TagAssignment < ActiveRecord::Base
      has_many :tags, :as => :taggable

end
Run Code Online (Sandbox Code Playgroud)

在我看来,这应该可行,但是......阅读这里的所有问题,知道我需要一个:source =>选项将它们连接在一起,但我只是没有完全遵循如何做到这一点。有人可以帮忙吗?

activerecord ruby-on-rails ruby-on-rails-3

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

部署rails应用程序...如何加载第一个用户?

也许我在这里遗漏了一些非常简单的东西,我不知道 - 我以前从未部署过rails应用程序.我正要.我正在使用Devise进行用户身份验证,并且有几个需要身份验证的操作.该应用程序未设置,因此任何人都可以注册,注册仅限于将管理该应用程序的一组用户.

但是,我不知道...当应用程序切换到生产数据库时,如何将自己设置为第一个用户?用户模型将为空,我甚至无法访问允许我设置新用户的控制器,因为这些控制器需要身份验证.

ruby-on-rails-3

0
推荐指数
1
解决办法
82
查看次数

克隆git repo时出错

remote: Counting objects: 610, done.
remote: Compressing objects: 100% (352/352), done.
remote: Total 610 (delta 296), reused 434 (delta 210)
Receiving objects: 100% (610/610), 5.50 MiB | 2.19 MiB/s, done.
Resolving deltas: 100% (296/296), done.
error: Untracked working tree file '.DS_Store' would be overwritten by merge.
Run Code Online (Sandbox Code Playgroud)

那么,我留下了一个空的存储库.我刚刚将.DS_Store添加到我的.gitignore文件中,但似乎我甚至无法将干净的副本拉到我的本地机器上.

git github

0
推荐指数
1
解决办法
785
查看次数