0

私はこれに対する答えを探して精練していて、すぐに3時間を殺しました。

データベースから特定のuser_idを取得するためのクエリを実行しています。(この方法で行うので、後でリクエストで使用するために結果を変数に永続化できます)

sql = <<-SQL
    SELECT users.id FROM users WHERE users.active = 't' and (users.created_by = #{user_id} OR users.id = #{user_id})
SQL
connection.execute(sql)

次に、IDの配列があります。そのため、これらを繰り返して、特定のIDがこの配列にあるかどうかを確認しようとしています。

変数

raise @editable_users_list.to_yaml

結果

- !binary "aWQ=": 7
  0: 7
- !binary "aWQ=": 8
  0: 8
- !binary "aWQ=": 10
  0: 10

正しい結果を抽出するための私の絶望的な試み

def can_edit_user?
      if logged_in?
        @editable_users_list.each do |user|
          raise user.to_s
          if user[:id].to_s == current_user[:id].to_s
            return true
          end
        end
      end
      return false
    end

上記のraise例外は、私のクエリが実際には配列の配列であることを示しています

{"id"=>7, 0=>7}

今、私はここで言及されている多くのことで遊んでいて、ちょうどあきらめました。

これのためのありとあらゆる助け...大いに感謝します。

4

2 に答える 2

0

ユーザーのIDのみを取得したい場合は、次のようにします:

@editable_users_list.map!(&:id)

次のように確認します。

return @editable_users_list.include? @editable_users_list

編集済み

sql = <<-SQL
    SELECT users.id FROM users WHERE users.active = 't' and (users.created_by = #{user_id} OR users.id = #{user_id})
SQL
@editable_users_list = connection.execute(sql)

@editable_users_list = @editable_users_list.map!(&:id)
于 2012-04-16T11:19:48.710 に答える
0

答えは以下のとおりです。これは、SQL がハッシュのハッシュを返すという事実によるものです。理由がまったくわかりません。誰かが私に上記のクエリを教えてくれるほど親切である場合、私のものとVikの両方がこれを返しています。それは巨大です:)。余談ですが。

それが機能したのは、両方のハッシュを次のようにループすることでした

def can_edit_user?(user_id)
  if logged_in?
    @editable_users_list.each do |user|
      user.each do |id,value|
        if value == user_id
          return true
        end
      end
    end
  end
  return false
end

これが正しい方法なのか、それとも「SQL 接続」の問題の回避策なのかはわかりません。

とにかく、上記のコードは私がやりたいことをやっていますが、最適ではありません(地獄、多分全体が最適ではない...)

時間を割いてくれた Vik に再び乾杯します。

于 2012-04-17T06:42:20.313 に答える