rubyforen.de
http://forum.ruby-portal.de/

Summierungsfehler
http://forum.ruby-portal.de/viewtopic.php?f=14&t=26956
Seite 1 von 1

Autor:  PhillipLuepke [ 15 Mär 2017, 20:30 ]
Betreff des Beitrags:  Summierungsfehler

Hallo zusammen,

ich habe ein Problem bei meiner Ruby-Applikation. Ich erstelle Nutzer, welche einer Ressource zugeordnet werden (resource_id). Die Arbeitszeit der Nutzer gibt die Kapazität der Ressource an. In meiner Ressourcen-Tabelle soll nun die Gesamtkapazität der Ressourcen angezeigt werden. Diese ergibt sich dann aus der Summe der Kapazitäten der Nutzer die der jeweiligen Ressource zugeordnet sind. Bei mir zeigt er zurzeit aber bei jeder Ressource die gleiche Kapazität an, die Summe aller Ressourcen.

Als Beispiel:

Ich habe 2 Nutzer die jeweils 8 Stunden arbeiten:

Nutzer 1: capacity 8, resource_id 1
Nutzer 1: capacity 8, resource_id 2

Nun sollten in der Ressourcentabelle 2 Ressourcen mit jeweils der Kapazität 8 stehen. Bei mir stehen aber beide Ressourcen mit einer Kapazität von 16..

Hier die entsprechenden index-files, controller und models.

resource.index


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<% provide(:title, 'Ressourcen') %>
<p id="notice"><%= notice %></p>

<h1>Ressourcen</h1>

<table id="resources" class="display">
<thead>
<tr>
<th>Name</th>
<th>Gesamtkapazit��t</th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>

<% @resources.each do |resource| %>
<tr>
<td><%= resource.name %></td>
<td><%= User.sum(:capacity, :conditions => {:resource_id => resource}) %></td>
<td><%= link_to 'Anzeigen', resource %></td>
<td><%= link_to 'Entfernen', resource, method: :delete, data: { confirm: 'Sind Sie sich sicher?' } %></td>
<% end %>
</tr>
</tbody>
</table>

<br>

<%= link_to "Neue Ressource", new_resource_path %>
<br>
<div class="navigation-left" style="float:left">
&lArr; <%= link_to "Zur��ck zu den Beziehungen", procedure_procedures_path %> </div>
<div class="navigation-left" style="float:right">
<%= link_to "Weiter mit den Verbr��uchen", procedure_resources_path %> &#8658; </div><br>
<div class="navigation-left" style="float:left">
&lArr; <%= link_to "Zur��ck zum Hauptmen��", project_start_path %> </div><br>


resource.model:


1
2
3
4
5
6
7
8
9
10
11
12
class Resource < ActiveRecord::Base
def resource_params
params.require(:resource).permit(:created_at, :name, :ocr, :cost, :oce)
end

validates :name, presence: true, uniqueness: true, length: {maximum: 50}

has_many :procedure_resources, :dependent => :destroy
has_many :procedures, through: :procedure_resources
has_many :users, :dependent => :destroy

end


resource.controller:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
class ResourcesController < ApplicationController
before_action :set_resource, only: [:show, :edit, :update, :destroy]

# GET /resources
# GET /resources.json
def index
@resources = Resource.all
@procedures = Procedure.all
@project = Project.find(1)
end

# GET /resources/1
# GET /resources/1.json

# GET /resources/1
# GET /resources/1.json
def show
@resource = Resource.find(params[:id])
end

# GET /resources/new
def new
@resource = Resource.new
end

# GET /resources/1/edit
def edit
@resource = Resource.find(params[:id])
end

# POST /resources
# POST /resources.json
def create
@resource = Resource.new(resource_params)

respond_to do |format|
if @resource.save
format.html { redirect_to @resource }
format.json { render :show, status: :created, location: @resource }
else
format.html { render :new }
format.json { render json: @resource.errors, status: :unprocessable_entity }
end
end
end

# PATCH/PUT /resources/1
# PATCH/PUT /resources/1.json
def update
@resource = Resource.find(params[:id])
respond_to do |format|
if @resource.update(resource_params)
format.html { redirect_to @resource }
format.json { render :show, status: :ok, location: @resource }
else
format.html { render :edit }
format.json { render json: @resource.errors, status: :unprocessable_entity }
end
end
end

# DELETE /resources/1
# DELETE /resources/1.json
def destroy
@resource = Resource.find(params[:id])
@resource.destroy
respond_to do |format|
format.html { redirect_to resources_url }
format.json { head :no_content }
end
end

private
# Use callbacks to share common setup or constraints between actions.
def set_resource
@resource = Resource.find(params[:id])
end

# Never trust parameters from the scary internet, only allow the white list through.
def resource_params
params.require(:resource).permit(:name, :oce, :oce, :cost, :ocr)
end
end


users.modell (Mitarbeiter):


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
class User < ActiveRecord::Base
has_many :microposts, dependent: :destroy
has_many :active_relationships, class_name: "Relationship",
foreign_key: "follower_id",
dependent: :destroy
has_many :passive_relationships, class_name: "Relationship",
foreign_key: "followed_id",
dependent: :destroy
has_many :following, through: :active_relationships, source: :followed
has_many :followers, through: :passive_relationships, source: :follower

belongs_to :resource


before_save { self.email = email.downcase }
validates :name, presence: true, length: {maximum: 50 }
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true, length: { maximum: 255 },
format: { with: VALID_EMAIL_REGEX },
uniqueness: { case_sensitive: false }
has_secure_password
validates :password, presence: true, length: { minimum: 6 }, allow_nil: true


# Returns the hash digest of the given string.
def User.digest(string)
cost = ActiveModel::SecurePassword.min_cost ? BCrypt::Engine::MIN_COST :
BCrypt::Engine.cost
BCrypt::Password.create(string, cost: cost)
end

# Defines a proto-feed.
# See "Following users" for the full implementation.
def feed
Micropost.all
end

# Follows a user.
def follow(other_user)
active_relationships.create(followed_id: other_user.id)
end

# Unfollows a user.
def unfollow(other_user)
active_relationships.find_by(followed_id: other_user.id).destroy
end

# Returns true if the current user is following the other user.
def following?(other_user)
following.include?(other_user)
end

end



users.controller:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
class UsersController < ApplicationController
before_action :logged_in_user, only: [:index, :edit, :update, :destroy,
:following, :followers]
before_action :correct_user, only: [:edit, :update]
before_action :admin_user, only: :destroy


def index
@users = User.paginate(page: params[:page])
end

def show
@user = User.find(params[:id])
@microposts = @user.microposts.paginate(page: params[:page])
end

def new
@user = User.new
end

def create
@user = User.new(user_params) # Not the final implementation!
if @user.save
log_in @user
flash[:success] = "Willkommen bei der Planung Ihres Projekts!"
redirect_to @user
else
render 'new'
end
end

def edit
@user = User.find(params[:id])
end

def update
@user = User.find(params[:id])
if @user.update_attributes(user_params)
flash[:success] = "Profil aktualisiert"
redirect_to @user
else
render 'edit'
end
end

def destroy
User.find(params[:id]).destroy
flash[:success] = "Nutzer gel��scht"
redirect_to users_url
end

def following
@title = "Ich Folge"
@user = User.find(params[:id])
@users = @user.following.paginate(page: params[:page])
render 'show_follow'
end

def followers
@title = "Mir Folgen"
@user = User.find(params[:id])
@users = @user.followers.paginate(page: params[:page])
render 'show_follow'
end

def update_proj
render 'update'
end


private

def user_params
params.require(:user).permit(:name, :capacity, :resource_id, :email, :password,
:password_confirmation)
end

# Before filters

# Confirms the correct user.
def correct_user
@user = User.find(params[:id])
redirect_to(root_url) unless current_user?(@user)
end

# Confirms an admin user.
def admin_user
redirect_to(root_url) unless current_user.admin?
end
end


Weiss jemand, wie ich es hinbekomme, dass er nur die Kapazität der jeweiligen Ressource in der resource.index anzeigt?
Der Fehler muss ja im resource.index bei folgender Zeile stecken: <td><%= User.sum(:capacity, :conditions => {:resource_id => resource}) %></td>
oder?

Danke schonmal! :)

Besten Gruß,
Phillip

Autor:  WoNáDo [ 16 Mär 2017, 18:51 ]
Betreff des Beitrags:  Re: Summeierungsfehler

Es handelt sich doch um Ruby on Rails, oder?

Falls ja - bitte hier kurz melden, weil ich den Thread dann dorthin verschieben werde. Das macht deutlich mehr Sinn.

Autor:  PhillipLuepke [ 18 Mär 2017, 11:43 ]
Betreff des Beitrags:  Re: Summeierungsfehler

Ja genau es ist RoR. Tut mir leid, bin noch ganz frisch hier unterwegs..:-D

Danke fürs verschieben :)

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/